DevOps'ing Containers

30
@stuartleeks DevOps’ing with Containers Stuart Leeks Technical Evangelist Microsoft

Transcript of DevOps'ing Containers

Page 1: DevOps'ing Containers

@stuartleeks

DevOps’ing with ContainersStuart LeeksTechnical EvangelistMicrosoft

Page 2: DevOps'ing Containers

@stuartleeks

Containers…won’t create world peace

Page 3: DevOps'ing Containers

@stuartleeks

You don’t have to use containers

Page 4: DevOps'ing Containers

@stuartleeks

Page 5: DevOps'ing Containers

@stuartleeks

Page 6: DevOps'ing Containers

@stuartleeks

Containers Microservices

Page 7: DevOps'ing Containers

@stuartleeks

Containers…won’t create world peace

Page 8: DevOps'ing Containers

@stuartleeks

Dockerhttps://www.flickr.com/photos/anaulin/1047673820/

Page 9: DevOps'ing Containers

@stuartleeks

Page 10: DevOps'ing Containers

@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

Page 11: DevOps'ing Containers

@stuartleeks

DEMO…

Docker

Page 12: DevOps'ing Containers

@stuartleeks

FROM microsoft/dotnet:1.0.1

COPY . /appWORKDIR /app

RUN ["dotnet", "restore"]

RUN ["dotnet", "build"]

EXPOSE 5000

ENTRYPOINT ["dotnet", "run"]

Dockerfile

Page 13: DevOps'ing Containers

@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

Page 14: DevOps'ing Containers

@stuartleeks

# run dotnet publish before building ;-)FROM microsoft/dotnet:1.0.1

COPY published /appWORKDIR /app

EXPOSE 5000

ENTRYPOINT ["dotnet", "myapp.dll"]

Dockerfile

Page 15: DevOps'ing Containers

@stuartleeks

hub.docker.com etc

Docker image registry service• Docker Hub• Docker Trusted Registry• Docker Registry• Azure Container Registry

docker push/pull

Page 16: DevOps'ing Containers

@stuartleeks

hub.docker.com etc

Docker Hub

Dev

push

Host

pull

Page 17: DevOps'ing Containers

@stuartleeks

$ docker pull

$ docker run

Host

Page 18: DevOps'ing Containers

@stuartleeks

Host

$ docker –H host pull

$ docker –H host run

Admin Docker API

Page 19: DevOps'ing Containers

@stuartleeks

$ docker –H host1 run

$ docker –H host2 run

$ docker –H hostn run

Admin

Host1

Host2

Hostn

......

Page 20: DevOps'ing Containers

@stuartleeks

Docker Swarm

$ docker –H host pull

$ docker –H host run

Admin

Docker API

Load balancer

Management Agents

Load balancer

...

Page 21: DevOps'ing Containers

@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

Page 22: DevOps'ing Containers

@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

Page 23: DevOps'ing Containers

@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

Page 24: DevOps'ing Containers

@stuartleeks

DEMO…

Docker

Page 25: DevOps'ing Containers

@stuartleeks

Azure Container ServiceChoices

Swarm

DC/OS

Kubernetes (preview)

Page 26: DevOps'ing Containers

@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/

Page 27: DevOps'ing Containers

@stuartleeks

DevOps’ing with Containers

Page 28: DevOps'ing Containers

@stuartleeks

Docker

docker-composeDocker Swarm

Docker HubASP.NET Core

Azure Container Service

Visual Studio Team Services

Page 29: DevOps'ing Containers

@stuartleeks

Containers…won’t create world peace

Page 30: DevOps'ing Containers

@stuartleeks

DevOps’ing with ContainersStuart LeeksTechnical EvangelistMicrosoft