@amjithr
Intro to
Docker
PYCON ■
Saturday, April 12, 14
Slide 2
Slide 2 text
@amjithr
Hi
Saturday, April 12, 14
Slide 3
Slide 3 text
Saturday, April 12, 14
Slide 4
Slide 4 text
@amjithr
Why?
Saturday, April 12, 14
Slide 5
Slide 5 text
@amjithr
Why?
Saturday, April 12, 14
Slide 6
Slide 6 text
@amjithr
Why?
Saturday, April 12, 14
Slide 7
Slide 7 text
@amjithr
Why?
Saturday, April 12, 14
Slide 8
Slide 8 text
@amjithr
Why?
Saturday, April 12, 14
Slide 9
Slide 9 text
@amjithr
Why?
Saturday, April 12, 14
Slide 10
Slide 10 text
@amjithr
Why?
Celery
Saturday, April 12, 14
Slide 11
Slide 11 text
@amjithr
Why?
Celery
Saturday, April 12, 14
Slide 12
Slide 12 text
@amjithr
WHAT’S
Docker?
Saturday, April 12, 14
Slide 13
Slide 13 text
@amjithr
WHAT’S
Docker?
Not Pants
Saturday, April 12, 14
Slide 14
Slide 14 text
@amjithr
DotCloud -> Docker Inc
Jan
Written in Go
Active community
History
Saturday, April 12, 14
Slide 15
Slide 15 text
@amjithr
“Docker is an open-source engine that
automates the deployment of any
application as a lightweight, portable,
self-sufficient container that will run
virtually anywhere*.”
Saturday, April 12, 14
Slide 16
Slide 16 text
@amjithr
CHROOT
BSD JAILS
SOLARIS ZONES
What?
Saturday, April 12, 14
Slide 17
Slide 17 text
@amjithr
Linux Containers
AUFS
Git like versioning
REST API
What?
Saturday, April 12, 14
Slide 18
Slide 18 text
@amjithr
What?
Bare Metal
Host OS
Hypervisor
Guest
OS
Libs
AppA
Guest
OS
Libs
AppB
Guest
OS
Libs
AppC
Bare Metal
Host OS
D
o
c
k
e
r
Libs Libs
App
A
App
A’
App
B
App
B’
VM
Container
Saturday, April 12, 14
Slide 19
Slide 19 text
@amjithr
Lightweight
Isolated Instances
Faster than VMs
Why?
Saturday, April 12, 14
Slide 20
Slide 20 text
@amjithr
docs.docker.io - Installation instructions
OS X - boot docker (VM) + docker client
Setup
Linux
C0 C1
client
Saturday, April 12, 14
Slide 21
Slide 21 text
@amjithr
docs.docker.io - Installation instructions
OS X - boot docker (VM) + docker client
Setup
OS X
VBox
linux
C0 C1
client
Linux
C0 C1
client
Saturday, April 12, 14
Slide 22
Slide 22 text
@amjithr
Docker Daemon - Server
Docker Client - Client
Terminology
Saturday, April 12, 14
Slide 23
Slide 23 text
@amjithr
Terminology
Daemon
Linux
TCP
Socket
Client
Client
Linux
TCP
Client
OS X
TCP
Saturday, April 12, 14
Slide 24
Slide 24 text
@amjithr
DEMO
Saturday, April 12, 14
Slide 25
Slide 25 text
@amjithr
Images - Read-only snapshot
Containers - Instantiation of an Image
Terminology
Saturday, April 12, 14
Slide 26
Slide 26 text
@amjithr
Terminology
Master
Copy
Photocopy
B
+
Margin
Notes
Photocopy
A
+
Highlights
Photocopy
C
Saturday, April 12, 14
Slide 27
Slide 27 text
@amjithr
Terminology
IMAGE
Lib
Bin
Env Vars
Files
ContainerB
Lib
Bin
Env Vars’
Files
ContainerA
Lib
Bin
Env Vars
Files ContainerC
Lib
Bin
Env Vars
Files’
Saturday, April 12, 14
Slide 28
Slide 28 text
@amjithr
Registry - PyPI for docker images
Repository - Projects in the Registry
Terminology
Saturday, April 12, 14
Slide 29
Slide 29 text
@amjithr
docker pull
docker images
docker run
docker ps
docker logs
Basics
Saturday, April 12, 14
Slide 30
Slide 30 text
@amjithr
Dockerfile - Series of commands
Automation
Saturday, April 12, 14
Slide 31
Slide 31 text
@amjithr
Dockerfile
FROM base
ENV TEST_ENV true
ADD test_file /
RUN apt-get update
RUN apt-get install -y fortune cowsay
CMD fortune | cowsay
Saturday, April 12, 14
Slide 32
Slide 32 text
@amjithr
Django
Port Forwarding
docker run -d django-docker
Network
Saturday, April 12, 14
Slide 33
Slide 33 text
@amjithr
Django
Port Forwarding
docker run -d -p host:container django-docker
Network
Saturday, April 12, 14
Slide 34
Slide 34 text
@amjithr
Volumes - Mount folders - host/container
docker run -v host_path:container_path django
Links - Service discovery through env vars
docker run --link mysql:db --name webapp django
Misc
Saturday, April 12, 14
Slide 35
Slide 35 text
@amjithr
Docker daemon is also a server
REST API
- List of images/containers
- Create/Start/Stop/Delete containers
- Websocket attach
- Shipyard
REST API
Saturday, April 12, 14