Post on 13-Apr-2017
@stuartleeks
DevOps’ing with ContainersStuart LeeksTechnical EvangelistMicrosoft
@stuartleeks
Containers…won’t create world peace
@stuartleeks
You don’t have to use containers
@stuartleeks
≠
@stuartleeks
≠
@stuartleeks
Containers Microservices
@stuartleeks
Containers…won’t create world peace
@stuartleeks
Dockerhttps://www.flickr.com/photos/anaulin/1047673820/
@stuartleeks
@stuartleeks
Hypervisor
Host OS
Server
Guest OS Guest OS
Bins/Libs Bins/Libs
App A App B
Virtual Machines
Docker Engine
Host OS
Server
Bins/Libs Bins/Libs
App A App B
Docker
Docker
@stuartleeks
DEMO…
Docker
@stuartleeks
FROM microsoft/dotnet:1.0.1
COPY . /appWORKDIR /app
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
EXPOSE 5000
ENTRYPOINT ["dotnet", "run"]
Dockerfile
@stuartleeks
FROM microsoft/dotnet:1.0.1
COPY project.json /app/project.jsonRUN ["dotnet", "restore"]
COPY . /appWORKDIR /app
RUN ["dotnet", "build"]
EXPOSE 5000
ENTRYPOINT ["dotnet", "run"]
Dockerfile
@stuartleeks
# run dotnet publish before building ;-)FROM microsoft/dotnet:1.0.1
COPY published /appWORKDIR /app
EXPOSE 5000
ENTRYPOINT ["dotnet", "myapp.dll"]
Dockerfile
@stuartleeks
hub.docker.com etc
Docker image registry service• Docker Hub• Docker Trusted Registry• Docker Registry• Azure Container Registry
docker push/pull
@stuartleeks
hub.docker.com etc
Docker Hub
Dev
push
Host
pull
@stuartleeks
$ docker pull
$ docker run
Host
@stuartleeks
Host
$ docker –H host pull
$ docker –H host run
Admin Docker API
@stuartleeks
$ docker –H host1 run
$ docker –H host2 run
$ docker –H hostn run
Admin
Host1
Host2
Hostn
......
@stuartleeks
Docker Swarm
$ docker –H host pull
$ docker –H host run
Admin
Docker API
Load balancer
Management Agents
Load balancer
...
@stuartleeks
version: '2' services: chess: image: stuartleeks/chesstest ports: - 80:5000 environment: mongodbConnectionString: mongodb://mongo:27017 ApplicationInsights__InstrumentationKey: $APPINSIGHTS_KEY mongo: image: mongo volumes: - mongo-data:/data/dbvolumes: mongo-data: {} # defaults to driver:local
docker-compose.yml
@stuartleeks
$ docker-compose pull # Pulls service image
$ docker-compose up # Create and start containers$ docker-compose down # Stop and remove containers
$ docker-compose scale # Set number of containers for a service
docker-compose
@stuartleeks
Putting it all together
Docker Hub
Docker Host
vsts-agent
Source control
Build service
Azure Container Service
commit
triggers build
execute build
docker build
docker push
docker-compose
browser
docker pull
Developer User
@stuartleeks
DEMO…
Docker
@stuartleeks
Azure Container ServiceChoices
Swarm
DC/OS
Kubernetes (preview)
@stuartleeks
LinksDocker• Hub: https://hub.docker.com/
• Trusted Registry: https://docs.docker.com/docker-trusted-registry/
• Registry image: https://docs.docker.com/registry/
• Windows Containers: https://aka.ms/containers
Azure• Container Service: https://azure.microsoft.com/en-us/documentation/services/container-service/
• (video): https://azure.microsoft.com/en-us/documentation/videos/using-azure-container-service-with-docker/
• Docker on Ubuntu: https://azure.microsoft.com/en-us/marketplace/partners/canonicalandmsopentech/dockeronubuntuserver1404lts/
• Docker Datacenter: https://azure.microsoft.com/en-us/marketplace/partners/docker/dockerdatacenterdocker-datacenter/
• Docker Machine: https://azure.microsoft.com/en-us/documentation/articles/vs-azure-tools-docker-machine-azure-config/
• Container Registry: https://azure.microsoft.com/en-us/services/container-registry/
.NET Core• Get it: https://dot.net/core
• Steve Lasker – building with VSTS: https://blogs.msdn.microsoft.com/stevelasker/2016/06/13/building-net-core-linux-docker-images-with-visual-studio-team-services
Visual Studio Team Services: https://www.visualstudio.com
Application Insights• Getting started: https://azure.microsoft.com/en-us/documentation/articles/app-insights-overview/
• ASP.NET Core: https://github.com/Microsoft/ApplicationInsights-aspnetcore/wiki/Getting-Started
• Analytics: https://azure.microsoft.com/en-us/documentation/articles/app-insights-analytics/
@stuartleeks
DevOps’ing with Containers
@stuartleeks
Docker
docker-composeDocker Swarm
Docker HubASP.NET Core
Azure Container Service
Visual Studio Team Services
@stuartleeks
Containers…won’t create world peace
@stuartleeks
DevOps’ing with ContainersStuart LeeksTechnical EvangelistMicrosoft