Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Introduction to Docker
1. Introduction to
Jirayut Nimsaeng (Dear)
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
2. Jirayut Nimsaeng
Docker 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
3. Jirayut Nimsaeng
Docker 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
4. Developer Problems
Developer Local Test QA
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Production
5. What Developer needs
Production-like Quick Repeatable
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
6. Docker can solve this problem
Developer Local Test QA
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Production
7. Infrastructure Problems
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
8. Shipping with container
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
9. Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker can
● Deploy (almost) everything
10. Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker can
● Deploy (almost) everywhere
Native On VMs
11. Jirayut Nimsaeng
Docker 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
12. Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
In summary
13. Jirayut Nimsaeng
Docker 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
14. Docker CPU benchmark
Docker / KVM: Compute Node Steady-State CPU (Segment Overlay)
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
14
12
10
8
6
4
2
0
docker-usr
docker-sys
kvm-usr
kvm-sys
Time: KVM(95s - 307s) Docker(31s – 243s)
CPU Usage In Percent
Docker Averages
– 0.2
– 0.03
KVM Averages
– 1.91
– 0.36
15. Docker Memory benchmark
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
7.00E+09
6.00E+09
5.00E+09
4.00E+09
3.00E+09
2.00E+09
1.00E+09
0.00E+00
Docker / KVM: Compute Node Used Memory (Overlay)
kvm
docker
Axis Title
Memory Used
16. Docker Memory benchmark
MEMCPY DUMB MCBLOCK
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
14000
12000
10000
8000
6000
4000
2000
0
3823.3
4393.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
17. Docker I/O benchmark
Sysbench Synchronous File I/O Random Read/Write @ R/W Ratio of 1.50
1 2 4 8 16 32 64
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
1600
1400
1200
1000
800
600
400
200
0
docker
KVM
Threads
Total Transferred In Kb/sec
18. Jirayut Nimsaeng
Docker 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
19. Jirayut Nimsaeng
Docker 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
20. Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker image layers
21. Jirayut Nimsaeng
Docker 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
22. Containers vs. VMs
App
A2
Hypervisor
Host OS
App
B1
Jirayut Nimsaeng
Containers are isolated,
but share OS and, where
appropriate, bins/libraries
Bins/Libs Bins/Libs
Host OS
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Server
App
A1
Guest
OS
Guest
OS
Guest
OS
Bins/
Libs
Bins/
Libs
Bins/
Libs
VM
Server
App A1
App A2
App B1
App B2
App B3
Docker daemon
Container
23. Containers more lightweight
VMs Containers
App
B1
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
App
A1
Guest
OS
App
A2
Guest
OS
Guest
OS
Bins/
Libs
Bins/
Libs
Bins/
Libs
App
A1
App
A2
Δ
App A1 App A2 Modified
App
Bins/
Libs
Base
24. Docker container concept
App D2
App E Prod
App B
MySQL
PHP
App E Demo
Python AAppaacchhee
Host OS (CoreOS)
App D1
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Kernel
Docker driver, aufs/btrfs
App A1
App A2
App B Demo
App B Prod
MySQL
PHP
Ubuntu base Bins/Libs
Docker daemon
Busybox base bins/libs
Python Apache
Data Container for App A1
App B
CentOS base Bins/Libs
Data Container for App A2
Data Container for App B Prod
Data Container for App C
App C
App F
Docker Base Image Docker Image Docker Container
25. Jirayut Nimsaeng
Docker 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
26. Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Sample Dockerfile
FROM 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
27. Jirayut Nimsaeng
Docker 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
28. Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Hub
29. Commit Change
Jirayut Nimsaeng
App A2 Container
App A App A Image
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker life cycle
App A
Docker Container
Docker
Registry
Commit Push
Host
App A1 Container
Pull
Docker Engine
Ubuntu
Base Docker
Apache
Docker Container
Apache
Bins/Libs
Apache + PHP
Docker Image
Bins/Libs
Apache
App A
ΔΔ
Change
App A
Apache
Bins/Libs
App A
Docker image
30. App A Image App A
Docker Engine
Jirayut Nimsaeng
Image App A
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker workflows
Dockerfile
For App A
Host 1 (Dev/Build Server)
Docker
Registry
Host 2 (Container Server)
1.Build
2.Push
3.Pull
4.Run
Docker Engine
Container App A Production
31. 2022 2035
2035
Jirayut Nimsaeng
80
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Use Cases
● Docker as Development Environment
Host
Virtualbox VM
22
SSH Docker Daemon
Web Server
boot2docker-vm
80 1024+
Docker Containers
Database
Host-only
80
32. Bins/Libs Bins/Libs
Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Use Cases
● Docker as Infrastructure as a Service
Host OS
Server
App A
App A~
App B
App B~
App B~~
Docker daemon
33. Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Use Cases
● Docker as Platform as a Service
34. Jirayut Nimsaeng
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
Docker Use Cases
● Docker for Continuous Delivery
35. Continuous Delivery with Docker
Repository
Server
5.Get Wordpress Code
Jirayut Nimsaeng
MySQL Data Image
Docker for DevOps and Continuous Delivery Workshop
October 11, 2014 @ OSS Festival 2014
MySQL
Dockerfile
Data MySQL Data Image
Docker Engine
Host 1 (Dev/Build Server)
Docker
Registry
Host 2 (Container Server)
1.Build
3.Push
7.Pull
8.Run
Docker Engine
Container MySQL Data
Backup
Server
2.Get DB Backup
Wordpress
4.Build Dockerfile
Wordpress Image
6.Push
Wordpress Image
Container Wordpress