introduction to docker
DESCRIPTION
Introduction to Docker slide in Docker for DevOps and Continuous Delivery at OSS Festival 2014 ThailandTRANSCRIPT
Introduction to
Jirayut Nimsaeng (Dear)
Docker for DevOps and Continuous Delivery WorkshopOctober 11, 2014 @ OSS Festival 2014
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
About me● Jirayut Nimsaeng (Dear)● Infrastructure Team Lead
at Proteus Technologies● Scrum Master● Interested in Cloud and
Open Source Technology
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Experienced?● Use Vagrant● Read and tried Docker online tutorial● Install and run Docker locally● Build Docker images● Push Docker images to Docker Hub● Written Dockerfile● Deploy Docker images for dev/test/prod
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Developer Problems
Developer Local Test QA
Production
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
What Developer needs
Production-like Quick Repeatable
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker can solve this problem
Developer Local Test QA
Production
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Infrastructure Problems
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Shipping with container
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker can● Deploy (almost) everything
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker can● Deploy (almost) everywhere
Native On VMs
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker can● Deploy reliably & consistently● Everything will be exactly the same
– Distros– Versions– Dependencies
● If it works locally, it will work everywhere
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
In summary
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker can● Deploy efficiently
– Laptop can run 10-100 containers easily– Server can run 10-1000 containers
● Containers can run at native speeds– http://www.slideshare.net/BodenRussell/kvm-and-
docker-lxc-benchmarking-with-openstack
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker CPU benchmark
0
2
4
6
8
10
12
14
Docker / KVM: Compute Node Steady-State CPU (Segment Overlay)
docker-usrdocker-syskvm-usrkvm-sys
Time: KVM(95s - 307s) Docker(31s – 243s)
CPU Usage In Percent
Docker Averages
– 0.2
– 0.03
KVM Averages
– 1.91
– 0.36
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Memory benchmark
0.00E+00
1.00E+09
2.00E+09
3.00E+09
4.00E+09
5.00E+09
6.00E+09
7.00E+09
Docker / KVM: Compute Node Used Memory (Overlay)
kvmdocker
Axis Title
Memory Used
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Memory benchmark
MEMCPY DUMB MCBLOCK0
2000
4000
6000
8000
10000
12000
14000
3823.34393.3
12881.61
3813.38
4395.92
12905.68
3428.95 3461.59
7223.23
Memory Benchmark Performance
Bare Metal (MiB/s)docker (MiB/s)KVM (MiB/s)
Memory Test
MiB/s
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker I/O benchmark
1 2 4 8 16 32 640
200
400
600
800
1000
1200
1400
1600
Sysbench Synchronous File I/O Random Read/Write @ R/W Ratio of 1.50
dockerKVM
Threads
Total Transferred In Kb/sec
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
What is Docker?● Platform to help code, test and deploy
applications● Combine with
– Lightweight container virtualization– Work flows– Tooling
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker image● Docker images are read-only templates● Each image consists of series of layers● Docker use union file system to combine layers
into single image● Every image starts from base image
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker image layers
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker container● Docker containers launched from Docker image● Container consists of
– Operating system– User-added files– Meta-data
● When Docker container runs, it adds a read-write layer on top of the image
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Containers vs. VMs
Server
Host OS
Hypervisor
GuestOS
GuestOS
GuestOS
Bins/Libs
AppA1
Bins/Libs
AppB1
Bins/Libs
AppA2
VM
Server
Host OS
Bins/Libs Bins/Libs
App A
1
App A
2
App B
1
App B
2
App B
3
Docker daem
o n
Container
Containers are isolated,but share OS and, whereappropriate, bins/libraries
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Containers more lightweight
GuestOS
GuestOS
GuestOS
Bins/Libs
AppA1
Bins/Libs
AppB1
Bins/Libs
AppA2
VMs Containers
AppA1
AppA2
Δ
App A1 App A2 ModifiedApp
Bins/Libs
Base
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker container concept
KernelDocker driver, aufs/btrfs
Host OS (CoreOS)
Ubuntu base Bins/Libs
App A
1
App A
2
Docker daem
o n
Busybox base bins/libs
Python Apache
PHP
MySQL
App B
Dem
o
App B
Prod
Data C
o ntaine r for Ap p A
1App B
CentOS base Bins/Libs
App D
1
App D
2
Python ApacheApache
PHP
App E
Dem
o
App E
Prod
App B
MySQL
Data C
o ntaine r for Ap p A
2
Data C
o ntaine r for Ap p B
Pro d
Data C
o ntaine r for Ap p C
App C
App F
Docker Image Docker ContainerDocker Base Image
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Dockerfile● Dockerfile is instructions to build Docker image
– How to run commands– Add files or directories– Create environment variables– What process to run when launching container
● When build Dockerfile, new Docker image will return as a result
● Or we can call result from building Dockerfile is new base Docker image
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Sample DockerfileFROM base
MAINTAINER Jirayut Nimsaeng <w [at] winginfotech.net>
ADD build-files /build-files
RUN apt-get update
RUN apt-get install -y openssh-server vim tmux rsync byobu
RUN mkdir /var/run/sshd
RUN sed -i 's/required pam_loginuid.so/optional pam_loginuid.so/g' /etc/pam.d/sshd
CMD /start.sh
EXPOSE 22
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Registry● Docker Registry is the store for Docker image● Docker Hub is public Docker Registry like Github● Using Docker client to push and pull Docker image
from Docker Registry● You can create your own Docker Registry
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Hub
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker life cycle
App ADocker Container
DockerRegistry
PushCommit
Host
App A
1 Contai ner
Pull
Docker Engine
App A
2 Contai ner
App A
Image
App A
Image
UbuntuBase Docker
ApacheDocker Container
Apache + PHPDocker Image
Bins/Libs
Apache
Bins/Libs
Apache
ChangeCommit
App A
ΔΔ
Change
App A
Apache
Bins/Libs
App ADocker image
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker workflows
DockerfileFor App A
Host 1 (Dev/Build Server)
Docker Engine
Image A
pp AIm
age App A
DockerRegistry
Host 2 (Container Server)
1.Build
2.Push
3.Pull
4.Run
Docker Engine
Image A
pp A
Contain er A
pp A P
rodu ction
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Use Cases● Docker as Development Environment
Host
Virtualbox VM
Docker DaemonSSH
20352022
22
Web Server
boot2docker-vm
80 1024+
Docker Containers
Database
2035
Hos
t-on
ly
80
80
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Use Cases● Docker as Infrastructure as a Service
Server
Host OS
Bins/Libs Bins/Libs
App A
App A
~
App B
App B
~
App B
~~
Docker daem
o n
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Use Cases● Docker as Platform as a Service
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Use Cases● Docker for Continuous Delivery
Jirayut NimsaengDocker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Continuous Delivery with Docker
MySQLDockerfile
Host 1 (Dev/Build Server)
Docker Engine
MyS
QL D
ata Image
MyS
QL D
ata Image
DockerRegistry
Host 2 (Container Server)
1.Build
3.Push
7.Pull
8.Run
Docker Engine
MyS
QL D
ata Image
Contain er M
ySQ
L Dat a
BackupServer
2.Get DB Backup
WordpressDockerfile4.Build
RepositoryServer
5.Get Wordpress Code
Wordpr ess Im
a geW
ordpr ess Ima ge
6.PushW
ordpr ess Ima ge
Contain er W
or dpress