Skip to main content
Docker 101
Agenda
Containers are NOT VMs
Working with Docker (Build, Ship, Run)
Container Architecture
But Why?
Getting started
Q & A
Containers are not VMs
4
Docker containers are NOT VMs
• Easy connection to make
• Fundamentally different architectures
• Fundamentally different benefits
5
VMs
6
Containers
7
They’re different, not mutually exclusive
Build, Ship, and Run
10
Some Docker vocabulary
Docker Image
The basis of a Docker container. Represents a full application
Docker Container
The standard unit in which the application service resides and executes
Docker Engine
Creates, ships and runs Docker containers deployable on a physical or
virtual, host locally, in a datacenter or cloud service provider
Registry Service (Docker Hub or Docker Trusted Registry)
Cloud or server based storage and distribution service for your images
Basic Docker Commands
$ docker pull mikegcoleman/catweb:1.0
$ docker images
$ docker run –d –p 5000:5000 –-name catweb mikegcoleman/catweb:latest
$ docker ps
$ docker stop catweb (or <container id>)
$ docker rm catweb (or <container id>)
$ docker rmi mikegcoleman/catweb:latest (or <image id>)
$ docker build –t mikegcoleman/catweb:2.0 .
$ docker push mikegcoleman/catweb:2.0
Dockerfile – Linux Example
12
• Instructions on
how to build a
Docker image
• Looks very similar
to “native”
commands
• Important to
optimize your
Dockerfile
13
Put it all together: Build, Ship, Run Workflow
Developers IT Operations
BUILD
Development Environments
SHIP
Create & Store Images
RUN
Deploy, Manage, Scale
Demo
Build, Ship, and Run
Now you try it!
Visit http://docs.docker.com/installation
Install the right version of Docker for your machine
• Docker for Mac
• Docker for Windows
After Docker is installed, run Catweb
• docker run –d –p 5000:5000 --name catweb mikegcoleman/catweb
Browse to port 5000 on your machine
• http://localhost:5000
Docker Container Architecture
17
Image Layers
Kernel
Alpine Linux
Install Python and Pip
Upgrade Pip
Copy Requirements
Install Requirements
…
18
Docker File System
• Logical file system by grouping different file system primitives into
branches (directories, file systems, subvolumes, snapshots)
• Each branch represents a layer in a Docker image
• Allows images to be constructed / deconstructed as needed vs. a huge
monolithic image (ala traditional virtual machines)
• When a container is started a writeable layer is added to the “top” of the
file system
19
Copy on Write
Super efficient:
• Sub second instantiation times for containers
• New container can take <1 Mb of space
Containers appears to be a copy of the original image
But, it is really just a link to the original shared image
If someone writes a change to the file system, a copy of the affected
file/directory is “copied up”
20
What about data persistence?
• Volumes allow you to specify a directory in the container that exists outside of the
docker file system structure
• Can be used to share (and persist) data between containers
• Directory persists after the container is deleted
• Unless you explicitly delete it
• Can be created in a Dockerfile or via CLI
Enterprises are looking to Docker for critical
transformations
80%
Docker is central to
cloud strategy
Docker Survey: State of App development : Q1 - 2016
3 out 4
Top initiatives revolve
around applications
44%
Looking to adopt DevOps
App
Modernization
DevOpsCloud
State of App development Survey: Q1 2016
23
Docker delivers speed, flexibility and savings
+ +Agility Portability Control
State of App development Survey: Q1 2016, Cornell University case study
13XMore software releases
62%Report reduction in MTTR
10XCost reduction in maintaining
existing applications
Eliminate
“works on my machine”
issues
41%Move workloads across
private/public clouds
65%Reduction in developer
onboarding time
One platform delivers one journey for all applications
1 Containerize Legacy Applications
Lift and shift for portability and efficiency
2
3
Transform Legacy to Microservices
Look for shared services to transform
Accelerate New Applications
Greenfield innovation
Docker Universal Control Plane
Integrated Security
Docker Engine
Docker Trusted Registry
Config Mgt Monitoring LoggingCI/CD ..more..Images Networking Volumes
Virtual Public Cloud
Containers in production with Docker
Datacenter
• Enterprise container
orchestration, management
and security for dev and ops
• Available today for Linux
environments
• Q4 2016 beta for Windows
environments
Physical
27
Docker on Linux
• Create a Linux VM (or use physical), and install Docker
−Requires kernel 3.10
• Stable builds
−curl –sSL https://get.docker.com/ | sh
• Test and experimental builds
−curl –sSL https://test.docker.com/ | sh
−curl –sSL https://experimental.docker.com/ | sh
• Can also manually install (see docs)
Docker for Windows / Mac
• Currently in public beta
• Easy to install: Get up and running on Docker in minutes
• Leverages Hyper-V (Windows) or xhyv (Mac)
− Docker for Windows requires Windows Pro 10, Enterprise, or Education
• Full API / CLI compatibility
• OS integration for increased stability and speed
Docker for Azure / AWS
• Currently in private beta
− https://beta.docker.com/
• Easily deploy Docker 1.12 Swarm clusters (Linux)
• Scale up and down easily
• Integrate with underlying platform (i.e. load balancers)
Docker + Windows Server = Windows
Containers
• Native Windows containers
powered by Docker Engine
• Windows kernel engineered with
new primitives to support
containers
• Deep integration with 2+ years of
engineering collaboration in Docker
Engine and Windows Server
• Microsoft is top 5 Docker open
source project contributor and a
Docker maintainer
Infrastructure
Windows Server 2016
Bins/Libs
App
Docker Engine
Bins/Libs
App
Bins/Libs
App
Walk, Jog, Run
Walk:
• Setup your preferred Docker environment
• Fire up some prebuilt images (nginx, hello-world, mikegcoleman/catweb)
Jog:
• Pick a well documented solution (Wordpress, Jenkins, etc)
• Build it for yourself (blogs are your friend)
Run:
• Extend one your Walk solution or Dockerize an existing project
• Build your own Dockerfiles
• Experiment with Docker Compose and Swarm Mode
Thank You.
Questions?
Hands-on Labs
http://github.com/docker/labs/tree/master/beginner
Docker 101 - Nov 2016