11. What is Docker?
● Docker allows you to package an application
with all of its dependencies into a standardized
unit for software development.
Others
App
image
13. How to ship application by Docker
892607a8d00b 0 B
0b10aa9d5e8a 0 B
f4e6d72dbf27 22 B
9c6eed7ce0e9 57.66 MB
2eda4505e518 0 B
2a6ec6bae792 0 B
32f2a4cccab8 0 B
70e9a6907f10 125.1 MB
nginx:1.10
Image
Layer
$ docker pull nginx:1.10
14. Docker storage (version: 1.9.1)
vagrant@test:~$ sudo docker info
Containers: 0
Images: 2
Server Version: 1.9.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
………
892607a8d00b 0 B
0b10aa9d5e8a 0 B
f4e6d72dbf27 22 B
9c6eed7ce0e9 57.66 MB
2eda4505e518 0 B
2a6ec6bae792 0 B
32f2a4cccab8 0 B
70e9a6907f10 125.1 MB
Nginx:1.10
vagrant@test:~$ sudo ls -l /var/lib/docker/aufs/diff
total 32
drwxr-xr-x 2 root root 4096 May 1 07:40 0b10aa9d5e8a3dd8de176539bd...
drwxr-xr-x 2 root root 4096 May 1 07:39 2a6ec6bae79235ea27adcceff6...
drwxr-xr-x 2 root root 4096 May 1 07:39 2eda4505e518d08147e4fab915...
drwxr-xr-x 2 root root 4096 May 1 07:15 32f2a4cccab87ff519e17c9cf4...
drwxr-xr-x 21 root root 4096 May 1 07:15 70e9a6907f1068b3e08a9e6357...
drwxr-xr-x 2 root root 4096 May 1 07:40 892607a8d00ba2ad196a7d8a43...
drwxr-xr-x 7 root root 4096 May 1 07:40 9c6eed7ce0e9c7f8ab8e95d2f7...
drwxr-xr-x 3 root root 4096 May 1 07:40 f4e6d72dbf272d7e2ba0ef48f7...
15. Docker storage (version: 1.9.1)
vagrant@test:~$ sudo docker info
Containers: 0
Images: 2
Server Version: 1.9.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
………
892607a8d00b 0 B
0b10aa9d5e8a 0 B
f4e6d72dbf27 22 B
9c6eed7ce0e9 57.66 MB
2eda4505e518 0 B
2a6ec6bae792 0 B
32f2a4cccab8 0 B
70e9a6907f10 125.1 MB
Nginx:1.10
root@test:/var/lib/docker/aufs/diff/70e9a6907f1068b3e08a9e...# ls
bin boot dev etc home lib lib64 media mnt opt
proc root run sbin srv sys tmp usr var
root@test:/var/lib/docker/aufs/diff/9c6eed7ce0e9c7f8ab8e95...# ls
etc lib tmp usr var
16. AUFS – Another Union File System
From : https://docs.docker.com/engine/userguide/storagedriver/aufs-driver/
17. Run container (version: 1.9.1)
$ docker run -d -p 80:80 nginx:1.10
Docker
Client
Docker
Daemon
Send Request
892607a8d00b 0 B
0b10aa9d5e8a 0 B
f4e6d72dbf27 22 B
9c6eed7ce0e9 57.66 MB
2eda4505e518 0 B
2a6ec6bae792 0 B
32f2a4cccab8 0 B
70e9a6907f10 125.1 MB
Read/Writer Container Layer
Nginx:1.10
Send Response
Image read only
Simplified diagram
18. copy-on-write strategy
892607a8d00b 0 B
0b10aa9d5e8a 0 B
f4e6d72dbf27 22 B
9c6eed7ce0e9 57.66 MB
2eda4505e518 0 B
2a6ec6bae792 0 B
32f2a4cccab8 0 B
70e9a6907f10 125.1 MB
Read/Writer
Image read only
Nginx:1.10
Read/Writer
Read/Writer
Container-1
Container-2
Container-3
19. Basic isolation of Linux
● chroot – change root directory
root@test:/var/lib/docker/aufs/diff/70e9a6907f1068b3e08a9e...# ls
bin boot dev etc home lib lib64 media mnt opt
proc root run sbin srv sys tmp usr var
root@test:/var/lib/docker/aufs/diff/70e9a6907f1068b3e08a9e...# chroot .
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
root@test:/# ls -al
bin boot dev etc home lib lib64 media mnt opt
proc root run sbin srv sys tmp usr var
root@test:/# ls -al ../
bin boot dev etc home lib lib64 media mnt opt
proc root run sbin srv sys tmp usr var
28. Dockerize App by Dockerfile
From : https://github.com/nginxinc/docker-nginx/blob/41aa13f7d2c24407e483c40fb1e8b33e73462ff1/mainline/jessie/Dockerfile
36. How to debug (In my case)
From : http://9gag.com/gag/anYZ9Eo/my-code-works-but-i-don-t-know-why
37. How to Learn (In my case)
“Try to learn something about everything and
everything about something.”
Thomas Huxley Quotes
Read more : 陈天:如何快速掌握一门技术? (http://blog.jobbole.com/77712/)