3. Shipping Manifest
The Big Picture for working with Containers
Container Vocabulary
Container Architecture
Micro Services and Containerization
.NET Core
Visual Studio
Visual Studio TeamServices
Azure Container Service
5. Host OS - Hardware
Hyper Visor
Guest OS #2
Start on Earth – Docker Hello-World
• Docker Containers and VMs
Guest OS #1 (Virtual Machine)
Docker Daemon
6. Server
Host OS
Hypervisor
Server
Host OS
Docker Engine
Guest
OS
Guest
OS
Guest
OS
Bins/Libs Bins/Libs Bins/Libs
App A App A’ App B
Bins/Libs Bins/Libs
AppA
AppA’
AppB
AppB’
AppB
AppB’
AppB
AppB’
Containers are isolated,
but share OS and, where
appropriate,
bins/libraries
10. PS docker search microsoft
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
microsoft/dotnet Preview images for the .NET Core command l... 107 [OK]
microsoft/azure-cli Docker image for Microsoft Azure Command L... 52 [OK]
microsoft/iis Internet Information Services (IIS) instal... 11
microsoft/oms Monitor your containers using the Operatio... 3 [OK]
microsoft/applicationinsights Application Insights for Docker helps you ... 3 [OK]
microsoft/sample-dotnet .NET Core running in a Nano Server container 1
microsoft/dotnet35 1
PS docker pull microsoft/dotnet
Using default tag: latest
latest: Pulling from microsoft/aspnet
604d05dfd165: Extracting [====================================================> ] 34.78 MB/37.19 MB
a3ed95caeb02: Download complete
af271166b5e5: Download complete
ffff72610562: Pull complete
82633c2ea8fc: Pull complete
1ec63dc1715b: Downloading [=========================> ] 29.72 MB/64.67 MB
9be54d5ae146: Pull complete
c3abf6246d6a: Pull complete
Digest: sha256:cbbc0a7be0926d017ffd952799c4864c2c6cf812cbb70862bf2c8539401aa1e3
Status: Downloaded newer image for microsoft/dotnet:latest
17. Vocabulary
Host A VM running the Docker Daemon to host a collection of Docker Containers
Image An ordered collection of filesystems* to be used when instancing a container
Container A runtime instance of an image
Registry A collection of docker images
Dockerfile Commands to build a Docker image
Tag A version identifier for an image, plus the registry name
docker tag [registrypath]/image:[version]
Commands
Docker search Searches the current registry
Docker pull Pulls a Docker Image to your Docker Host cache
Docker run The process of instancing an Image as a running container
Understanding the Docker Architecture
20. PS docker run -it -v /c/Users/Swami:/wormhole busybox
/ # ls
bin dev etc home proc root sys tmp usr var wormhole
/ # cd wormhole
/wormhole # touch a.txt
/wormhole # touch b.txt
/wormhole # ls
a.txt b.txt
/wormhole # cat a.txt
Hello from the other side of the wormhole
/wormhole #
22. Vocabulary
Host A VM running the Docker Daemon to host a collection of Docker Containers
Image An ordered collection of filesystems* to be used when instancing a container
– * see layers, later on
Container A runtime instance of an image
Registry A collection of docker images
Dockerfile Commands to build a Docker image
Tag A version identifier for an image
Volume A means to provide persistent storage from an immutable container
Commands
Docker run The process of instancing an Image as a running container
Docker login Logs into the registry so you can push images
Docker build Creates an image, using a dockerfile as the definition
Docker tag Renames an image: [registryname]/[user]/[imagename]:[tag]
Docker push Pushes an image to a registry
Docker-compose Volumes
24. PS docker-machine ls
NAME ACTIVE DRIVER STATE URL DOCKER
default - virtualbox Running tcp://docker v1/10.1
dockerhost-linux - azure Running tcp://dockerhost-linux.cloudapp.net:2376 v1.10.2
PS docker-machine env dockerhost-linux
$Env:DOCKER_TLS_VERIFY = "1"
$Env:DOCKER_HOST = "tcp://dockerhost-linux.cloudapp.net:2376"
$Env:DOCKER_CERT_PATH = "C:UsersSteveLas.dockermachinemachinesdockerhost-linux"
$Env:DOCKER_MACHINE_NAME = "dockerhost-linux"
# Run this command to configure your shell:
# Docker-machine env dockerhost-linux | Invoke-Expression
PS docker-machine active
dockerhost-linux
PS docker-machine ip dockerhost-linux
dockerhost-linux.cloudapp.net
Note: Docker Machine not required when working with Docker for Windows
31. • ASP.NET
• In Container Development
• Edit & Refresh
• Breakpoint Debugging
Integration
Azure Hosted
Private Registry*
Production
Staging
Test
Visual Studio Code
Write/Edit
Run
Debug
Visual Studio Team Services
• Source Code Control
• Build
• Continuous Integration
• 3rd Party Integration:
VSTS Build Agents w/ Docker
• VM Scale Sets
• Azure Container Service
• Azure Hosted Docker Private Registry
Azure Container Service
Visual Studio
• Docker Language Services
• Docker Scaffolding w/yo docker
public registry
ASP.NET
Orchestration&Scheduling-Marathon/DockerSwarm
34. Dockerfile
Optimized release version. Validate locally, deployed to production
Dockerfile.debug
Local version, used for debugging
Docker-compose.yml
Deployed version, used to instance multiple containers
Docker-compose.yml.debug
Local version, used for debugging
DockerTask.ps1
PowerShell, to coordinate all the local operations. Similar to a makefile
Docker.targets & Docker.props
Used by Visual Studio to hook the F5 experience
Sets the docker host. Blank Machine for Docker for Windows*
launchSettings.json
Docker entry point added to enable running in a Docker Container.
37. Azure Container Service High AvailabilityHyper-Scale
Microservices
Container hosts
as cattle
Flexible
programming
models
Azure Private cloud Other clouds
Open Source
Orchestration
Host cluster
management
Open Source Container ManagementHigh Availability High Density
Placement
Constraints
Fast startup &
shutdown
Self-healing
Azure Container Service focusses on the configuration and management of the hosting infrastructure. We also provide key open source orchestration technologies. ACS does not provide an application development model. This has some advantages (e.g. more flexibility in application architecture) but some disadvantages (e.g. stateful applications need to be designed to manage their own state)