SlideShare a Scribd company logo
Homma's Slide 2015
dockerを実用で使うための
調査
ほんま
※本資料は技術を勉強しながら作成しているものであり、
間違った解釈をしている場合があります。ご了承ください。
熟練の上、作成したものではありません。
2015.07.04
Homma's Slide 2015
dockerのインストール
• CentOS 7.1(1503)を利用する。
• dockerのインストールはyum。
– yum install -y docker
• docker
• audit-libs-python
• checkpolicy
• docker-selinux
• libcgroup
• libsemanage-python
• setools-libs
等がインストールされます。
2
Homma's Slide 2015
注意
• 以下の事は追加で実施しておいた方が良いようで
す。
– SELinuxの停止
• /etc/selinux/config
– firewalldの停止
• systemctrl stop firewalld.service
• systemctrl disable firewalld.service
※私はまだ実施していません。
3
Homma's Slide 2015
dockerの起動
• dockerを制御しているのは、docker-daemonです。
– 起動していない場合は、エラーが表示されます。
• dockerを起動します。
– もう一度、docker psコマンドを実行します。
問題なくなりましたね。
# docker ps
FATA[0000] Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: no such file or
directory. Are you trying to connect to a TLS-enabled daemon without TLS?
# systemctl start docker.service
# systemctl enable docker.service
ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service'
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
4
Homma's Slide 2015
dockerプロセスは?
• dockerプロセスを見ると、1プロセス起動しています。
• systemctlで見てましょう
やっぱり、dockerプロセスのみとなっていますね。
# ps -ef | grep docke[r]
root 12692 1 0 19:15 ? 00:00:00 /usr/bin/docker -d --selinux-enabled
# systemctl status docker.service
docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
Active: active (running) since 土 2015-07-04 19:15:56 JST; 8min ago
Docs: http://docs.docker.com
Main PID: 12692 (docker)
CGroup: /system.slice/docker.service
└─12692 /usr/bin/docker -d --selinux-enabled
5
Homma's Slide 2015
dockerのファイルディスクリプタ
• dockerプロセスのファイルディスクリプタ
# lsof -p 12692
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker 12692 root cwd DIR 253,0 4096 128 /
docker 12692 root rtd DIR 253,0 4096 128 /
docker 12692 root txt REG 253,0 13530078 68275192 /usr/bin/docker
docker 12692 root mem REG 253,0 88720 134311240 /usr/lib64/libgcc_s-4.8.3-20140911.so.1
docker 12692 root mem REG 253,0 44088 134312941 /usr/lib64/librt-2.17.so
docker 12692 root mem REG 253,0 153184 134312958 /usr/lib64/liblzma.so.5.0.99
docker 12692 root mem REG 253,0 398272 134312991 /usr/lib64/libpcre.so.1.2.0
docker 12692 root mem REG 253,0 73968 134314313 /usr/lib64/libudev.so.1.4.0
docker 12692 root mem REG 253,0 288320 134312965 /usr/lib64/libsepol.so.1
docker 12692 root mem REG 253,0 147120 134313002 /usr/lib64/libselinux.so.1
docker 12692 root mem REG 253,0 19512 134312917 /usr/lib64/libdl-2.17.so
docker 12692 root mem REG 253,0 2107760 134312911 /usr/lib64/libc-2.17.so
docker 12692 root mem REG 253,0 300216 134635598 /usr/lib64/libdevmapper.so.1.02
docker 12692 root mem REG 253,0 753200 134313178 /usr/lib64/libsqlite3.so.0.8.6
docker 12692 root mem REG 253,0 141616 134312937 /usr/lib64/libpthread-2.17.so
docker 12692 root mem REG 253,0 164336 134312904 /usr/lib64/ld-2.17.so
docker 12692 root 0r CHR 1,3 0t0 1028 /dev/null
docker 12692 root 1u unix 0xffff8800369abc00 0t0 33103 socket
docker 12692 root 2u unix 0xffff8800369abc00 0t0 33103 socket
docker 12692 root 3r CHR 1,9 0t0 1033 /dev/urandom
docker 12692 root 4u unix 0xffff8800b337f080 0t0 33998 /var/run/docker.sock
docker 12692 root 5u CHR 10,236 0t0 1299 /dev/mapper/control
docker 12692 root 6u a_inode 0,9 0 6143 [eventpoll]
docker 12692 root 8u REG 253,0 5120 201972908 /var/lib/docker/linkgraph.db
docker 12692 root 9u unix 0xffff8800369ab840 0t0 33248 socket
docker 12692 root 10r a_inode 0,9 0 6143 inotify
6
Homma's Slide 2015
dockerの通信
• 先ほど、dockerを起動していないときにエラーが表
示されていましたが、dockerプロセスが
「/var/run/docker.sock」を開いています。
• つまり、dockerコマンドはUNIXドメインソケッ
ト「/var/run/docker.sock」を使って通信をし
ているということだと想像がつきます。
# docker ps
FATA[0000] Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: no such file or
directory. Are you trying to connect to a TLS-enabled daemon without TLS?
# lsof -p 12692
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
...
docker 12692 root 3r CHR 1,9 0t0 1033 /dev/urandom
docker 12692 root 4u unix 0xffff8800b337f080 0t0 33998 /var/run/docker.sock
...
7
Homma's Slide 2015
他にdocker-daemonで気付くこと①
• 開いているファイルディスクリプタ(FD)を見ると…
– /dev/urandomからランダムデータを取り出している
– /dev/mapper/control:Device-Mapper が使用するデバイ
スファイル
– [eventpoll]:epollを使用してFDの監視をしていますね。
– inotify:inotifyAPIを使ってファイルシステムのイベントを監
視していますね。
# lsof -p 12692
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
...
docker 12692 root 0r CHR 1,3 0t0 1028 /dev/null
docker 12692 root 1u unix 0xffff8800369abc00 0t0 33103 socket
docker 12692 root 2u unix 0xffff8800369abc00 0t0 33103 socket
docker 12692 root 3r CHR 1,9 0t0 1033 /dev/urandom
docker 12692 root 4u unix 0xffff8800b337f080 0t0 33998 /var/run/docker.sock
docker 12692 root 5u CHR 10,236 0t0 1299 /dev/mapper/control
docker 12692 root 6u a_inode 0,9 0 6143 [eventpoll]
docker 12692 root 8u REG 253,0 5120 201972908 /var/lib/docker/linkgraph.db
docker 12692 root 9u unix 0xffff8800369ab840 0t0 33248 socket
docker 12692 root 10r a_inode 0,9 0 6143 inotify
8
Homma's Slide 2015
他にdocker-daemonで気付くこと②
• 開いているファイルディスクリプタ(FD)を見ると…
– /var/lib/docker/linkgraph.db
# lsof -p 12692
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
...
docker 12692 root 0r CHR 1,3 0t0 1028 /dev/null
docker 12692 root 1u unix 0xffff8800369abc00 0t0 33103 socket
docker 12692 root 2u unix 0xffff8800369abc00 0t0 33103 socket
docker 12692 root 3r CHR 1,9 0t0 1033 /dev/urandom
docker 12692 root 4u unix 0xffff8800b337f080 0t0 33998 /var/run/docker.sock
docker 12692 root 5u CHR 10,236 0t0 1299 /dev/mapper/control
docker 12692 root 6u a_inode 0,9 0 6143 [eventpoll]
docker 12692 root 8u REG 253,0 5120 201972908 /var/lib/docker/linkgraph.db
docker 12692 root 9u unix 0xffff8800369ab840 0t0 33248 socket
docker 12692 root 10r a_inode 0,9 0 6143 inotify
# file /var/lib/docker/linkgraph.db
/var/lib/docker/linkgraph.db: SQLite 3.x database
9
Homma's Slide 2015
dockerのイメージ取得
• docker search/docker pull /docker images
# docker search centos
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/centos The official build of CentOS. 1097 [OK]
docker.io docker.io/tutum/centos Centos image with SSH access. For the root... 13 [OK]
docker.io docker.io/blalor/centos Bare-bones base CentOS 6.5 image 9 [OK]
docker.io docker.io/torusware/speedus-centos Always updated official CentOS docker imag... 6 [OK]
docker.io docker.io/million12/centos-supervisor Base CentOS-7 with supervisord launcher, h... 5 [OK]
docker.io docker.io/jdeathe/centos-ssh CentOS-6 6.6 x86_64 / EPEL Repo. / OpenSSH... 3 [OK]
docker.io docker.io/jdeathe/centos-ssh-mysql CentOS-6 6.6 x86_64 / MySQL. 2 [OK]
docker.io docker.io/layerworx/centos A general CentOS 6 image with the EPEL6 an... 2 [OK]
docker.io docker.io/nathonfowlie/centos-jre Latest CentOS image with the JRE pre-insta... 0 [OK]
docker.io docker.io/pdericson/centos Docker image for CentOS 0 [OK]
# docker pull centos
latest: Pulling from docker.io/centos
f1b10cd84249: Pull complete
c852f6d61e65: Pull complete
7322fbe74aa5: Already exists
docker.io/centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and
should not be relied on to provide security.
Digest: sha256:a4627c43bafc86705af2e8a5ea1f0ed34fbf27b6e7a392e5ee45dbd4736627cc
Status: Downloaded newer image for docker.io/centos:latest
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/centos latest 7322fbe74aa5 2 weeks ago 172.2 MB
10
Homma's Slide 2015
dockerイメージのtag?
• tagはどうやって検索するのでしょう?
– とりあえず、以下のページで見ることができます。
– https://registry.hub.docker.com/_/centos/
11
Homma's Slide 2015
CentOSの5, 6, 7をダウンロードする
• docker pull [レポジトリ]:[タグ名]でダウンロードしま
す 。CentOS 6のタグは6 またはcentos6です。
12
# docker pull centos:6
6: Pulling from docker.io/centos
fb9cc58bde0c: Pull complete
a005304e4e74: Already exists
a005304e4e74: Pulling fs layer
docker.io/centos:6: The image you are pulling has been verified. Important: image verification is a tech preview
feature and should not be relied on to provide security.
Digest: sha256:b97f4793ca20d63de294ae9393fea91b699e7a2cc643219c0307c29d5e38a894
Status: Downloaded newer image for docker.io/centos:6
# docker pull centos:5
5: Pulling from docker.io/centos
9069226e092e: Already exists
9069226e092e: Pulling fs layer
docker.io/centos:5: The image you are pulling has been verified. Important: image verification is a tech preview
feature and should not be relied on to provide security.
Digest: sha256:0d37c897617ace3f65f9d05b791ae6fb8ae811199f532ef5f03443724200c829
Status: Downloaded newer image for docker.io/centos:5
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/centos 6 a005304e4e74 2 weeks ago 203.1 MB
docker.io/centos latest 7322fbe74aa5 2 weeks ago 172.2 MB
docker.io/centos 5 9069226e092e 10 weeks ago 284.1 MB
Homma's Slide 2015
dockerから起動します。
• docker run -it –name (識別名) [リポジトリ名]:[タグ名] [コマンド]
13
# docker run -it -name centos_homma_7 centos:7 /bin/bash
Warning: '-name' is deprecated, it will be replaced by '--name' soon. See usage.
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or
use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
[root@db818fab31e5 /]#
[root@db818fab31e5 /]# cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)
# docker run -it --name centos_homma_6 centos:6 /bin/bash
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or
use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
[root@3aa349645c08 /]# cat /etc/centos-release
[root@3aa349645c08 /]# cat /etc/centos-release
CentOS release 6.6 (Final)
[root@3aa349645c08 /]#
# docker run -it --name centos_homma_5 centos:5 /bin/bash
Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or
use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
[root@d5589edcdca5 /]#
[root@d5589edcdca5 /]# cat /etc/redhat-release
CentOS release 5.11 (Final)
CentOS 7
CentOS 6
CentOS 5
※コンテナ内部からは、[Ctrl]+PQで抜けることができます。
この場合もdockerは動作中になります。
Homma's Slide 2015
docker ps
• docker ps で調べることができます。
• 「-a」を指定すると停止しているイメージも表示されま
す。centos_homma_5だけが起動中です。
14
# docker ps –a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f76902fed8fb centos:5 "/bin/bash" 6 seconds ago Up 5 seconds centos_homma_5
3aa349645c08 centos:6 "/bin/bash" 12 minutes ago Exited (0) 5 minutes ago centos_homma_6
db818fab31e5 centos:7 "/bin/bash" 13 minutes ago Exited (0) 5 minutes ago centos_homma_7
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f76902fed8fb centos:5 "/bin/bash" 2 minutes ago Up 2 minutes centos_homma_5
Homma's Slide 2015
docker attach①
• [Ctrl]+PQで抜けた場合は、docker attachを使って再
接続できます。
戻れました。
15
# docker attach centos_homma_5
[root@f76902fed8fb /]#
[root@f76902fed8fb /]# cat /etc/redhat-release
CentOS release 5.11 (Final)
Homma's Slide 2015
docker attach②
• 少し、ここで面白いことをします。2つのターミナルから接続し
た場合はどうなるでしょうか。
– 実は両方とも問題なく
接続できます。
16
※上も下も、docker attachしたものです。
上で入力すると、下でも入力が表示され
ます。また、同様にしたで入力した場合で
も上で表示されます。
全く、同じ表示になっています。
片方でexitすると終わります…
Homma's Slide 2015
/var/lib/docker/linkgraph.dbは?
• ここで、docker-daemonが開いていたデータベースはどうなっ
ているのでしょうか。
• 作成したコンテナを管理しているようですね。
17
# sqlite3 /var/lib/docker/linkgraph.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
edge entity
sqlite> select * from entity;
0
3aa349645c08a75874c1e833c66cb1dc7db27b81ade238d21f81665df1f88d0e
db818fab31e5c98a210767bd8e49cea6ef083554b52d5df60287abe7b3f45e16
f76902fed8fbbba4bcf05fed32592e02de32d95104450d92dae1b3fd7efec930
sqlite> select * from edge;
db818fab31e5c98a210767bd8e49cea6ef083554b52d5df60287abe7b3f45e16|0|centos_homma_7
3aa349645c08a75874c1e833c66cb1dc7db27b81ade238d21f81665df1f88d0e|0|centos_homma_6
0||/
f76902fed8fbbba4bcf05fed32592e02de32d95104450d92dae1b3fd7efec930|0|centos_homma_5
sqlite>
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f76902fed8fb centos:5 "/bin/bash" 41 minutes ago Exited (0) 5 minutes ago centos_homma_5
3aa349645c08 centos:6 "/bin/bash" 53 minutes ago Exited (128) 46 minutes ago centos_homma_6
db818fab31e5 centos:7 "/bin/bash" 54 minutes ago Exited (128) 46 minutes ago centos_homma_7
Homma's Slide 2015
コンテナを削除する
• docker rm [コンテナ名]で削除できます。
– コンテナイメージが削除できました。
– sqliteDBも見てみると削除されているようですね。
18
# docker rm centos_homma_5
centos_homma_5
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3aa349645c08 centos:6 "/bin/bash" 57 minutes ago Exited (128) 50 minutes ago centos_homma_6
db818fab31e5 centos:7 "/bin/bash" 58 minutes ago Exited (128) 50 minutes ago centos_homma_7
[root@dockers ~]# sqlite3 /var/lib/docker/linkgraph.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from edge;
db818fab31e5c98a210767bd8e49cea6ef083554b52d5df60287abe7b3f45e16|0|centos_homma_7
3aa349645c08a75874c1e833c66cb1dc7db27b81ade238d21f81665df1f88d0e|0|centos_homma_6
0||/
sqlite> select * from entity;
0
3aa349645c08a75874c1e833c66cb1dc7db27b81ade238d21f81665df1f88d0e
db818fab31e5c98a210767bd8e49cea6ef083554b52d5df60287abe7b3f45e16
sqlite>
Homma's Slide 2015
dockerのファイルを見る
• dockerのデータは/var/lib/dockerにあります。
19
[root@dockers docker]# ls -al /var/lib/docker/
合計 24
drwx------. 9 root root 4096 7月 4 23:45 .
drwxr-xr-x. 25 root root 4096 7月 4 22:16 ..
drwx------. 2 root root 6 7月 4 23:14 containers
drwx------. 5 root root 50 7月 4 21:40 devicemapper
drwx------. 9 root root 4096 7月 4 22:02 graph
drwx------. 2 root root 29 7月 4 19:15 init
-rw-r--r--. 1 root root 5120 7月 4 23:44 linkgraph.db
-rw------- 1 root root 279 7月 4 23:45 repositories-devicemapper
drwx------. 2 root root 6 7月 4 22:02 tmp
drwx------. 2 root root 26 7月 4 21:40 trust
drwx------. 2 root root 6 7月 4 19:15 volumes
Homma's Slide 2015
どのような格納されている?
• 一度、dockerを停止して、/var/lib/dockerを削除して
確認していきます。
20
[root@dockers docker]# systemctl stop docker
[root@dockers docker]# rm -rf /var/lib/docker/
[root@dockers docker]# systemctl start docker
[root@dockers docker]# du -ah /var/lib/docker/
0 /var/lib/docker/tmp
4.0K /var/lib/docker/devicemapper/metadata/transaction-metadata
4.0K /var/lib/docker/devicemapper/metadata/base
8.0K /var/lib/docker/devicemapper/metadata
293M /var/lib/docker/devicemapper/devicemapper/data
748K /var/lib/docker/devicemapper/devicemapper/metadata
293M /var/lib/docker/devicemapper/devicemapper
293M /var/lib/docker/devicemapper
0 /var/lib/docker/containers
0 /var/lib/docker/graph
0 /var/lib/docker/volumes
4.0K /var/lib/docker/repositories-devicemapper
0 /var/lib/docker/trust
8.0K /var/lib/docker/linkgraph.db
7.8M /var/lib/docker/init/dockerinit-1.6.2
7.8M /var/lib/docker/init
301M /var/lib/docker/
Homma's Slide 2015
dockerイメージの保存場所は?
• docker pullしてディレクトリを見てましょう
21
[root@dockers docker]# docker pull centos
...
[root@dockers docker]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/centos latest 7322fbe74aa5 2 weeks ago 172.2 MB
[root@dockers docker]# du -ah /var/lib/docker/
0 /var/lib/docker/tmp
4.0K /var/lib/docker/devicemapper/metadata/transaction-metadata
4.0K /var/lib/docker/devicemapper/metadata/base
4.0K /var/lib/docker/devicemapper/metadata/f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639
4.0K /var/lib/docker/devicemapper/metadata/c852f6d61e65cddf1e8af1f6cd7db78543bfb83cdcd36845541cf6d9dfef20a0
4.0K /var/lib/docker/devicemapper/metadata/7322fbe74aa5632b33a400959867c8ac4290e9c5112877a7754be70cfe5d66e9
24K /var/lib/docker/devicemapper/metadata
484M /var/lib/docker/devicemapper/devicemapper/data
916K /var/lib/docker/devicemapper/devicemapper/metadata
485M /var/lib/docker/devicemapper/devicemapper
0 /var/lib/docker/devicemapper/mnt/f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639
0 /var/lib/docker/devicemapper/mnt/c852f6d61e65cddf1e8af1f6cd7db78543bfb83cdcd36845541cf6d9dfef20a0
0 /var/lib/docker/devicemapper/mnt/7322fbe74aa5632b33a400959867c8ac4290e9c5112877a7754be70cfe5d66e9
4.0K /var/lib/docker/devicemapper/mnt
485M /var/lib/docker/devicemapper
0 /var/lib/docker/containers
0 /var/lib/docker/graph/_tmp
4.0K /var/lib/docker/graph/f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639/layersize
4.0K /var/lib/docker/graph/f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639/json
8.0K /var/lib/docker/graph/f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639
4.0K /var/lib/docker/graph/c852f6d61e65cddf1e8af1f6cd7db78543bfb83cdcd36845541cf6d9dfef20a0/layersize
4.0K /var/lib/docker/graph/c852f6d61e65cddf1e8af1f6cd7db78543bfb83cdcd36845541cf6d9dfef20a0/json
8.0K /var/lib/docker/graph/c852f6d61e65cddf1e8af1f6cd7db78543bfb83cdcd36845541cf6d9dfef20a0
4.0K /var/lib/docker/graph/7322fbe74aa5632b33a400959867c8ac4290e9c5112877a7754be70cfe5d66e9/layersize
4.0K /var/lib/docker/graph/7322fbe74aa5632b33a400959867c8ac4290e9c5112877a7754be70cfe5d66e9/json
8.0K /var/lib/docker/graph/7322fbe74aa5632b33a400959867c8ac4290e9c5112877a7754be70cfe5d66e9
28K /var/lib/docker/graph
このあたりが増えています。
Homma's Slide 2015
dockerでコンテナを起動すると
• docker runで起動するとファイルができました。
22
[root@dockers ~]# docker run -it -name centos_homma_7 centos:7 /bin/bash
...
[root@dockers ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc317e5ac1fe centos:7 "/bin/bash" 2 minutes ago Up 2 minutes centos_homma_7
[root@dockers ~]# du -ah /var/lib/docker/ | grep dc317e5ac1fe
4.0K /var/lib/docker/devicemapper/metadata/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852-init
4.0K /var/lib/docker/devicemapper/metadata/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852
0 /var/lib/docker/devicemapper/mnt/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852-init
0 /var/lib/docker/devicemapper/mnt/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852
4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/config.json
4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/hostconfig.json
4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/resolv.conf.hash
4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/resolv.conf
4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/hostname
4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/hosts
0 /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/secrets
4.0K
/var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/dc317e5ac1fe6291a57eee01
d486b01b7cb5b2249e205416ffa2d9b9d2a04852-json.log
32K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852
Homma's Slide 2015
docker run実行プロセス①
• docker run で動作したコンテナはどういう風に動い
ているんでしょうか。
– /bin/bashを2個実行させています。
– 起動させた/bin/bashは誰に作成されたのでしょうか。
– プロセスIDを見ると、docker-daemonから起動しています。
23
# ps -ef | grep docke[r]
root 1262 1 0 00:20 ? 00:00:00 /usr/bin/docker -d --selinux-enabled
root 2669 2619 0 00:27 pts/1 00:00:00 docker run -it -name centos_homma_7 centos:7 /bin/bash
root 2826 2800 0 00:38 pts/3 00:00:00 docker run -it -name centos_homma_7_02 centos:7 /bin/bash
# ps -ef | grep "/bin/bas[h]"
root 2669 2619 0 00:27 pts/1 00:00:00 docker run -it -name centos_homma_7 centos:7 /bin/bash
root 2710 1262 0 00:27 pts/2 00:00:00 /bin/bash
root 2826 2800 0 00:38 pts/3 00:00:00 docker run -it -name centos_homma_7_02 centos:7 /bin/bash
root 2864 1262 0 00:38 pts/4 00:00:00 /bin/bash
# ps -ef | grep "126[2]"
root 1262 1 0 00:20 ? 00:00:00 /usr/bin/docker -d --selinux-enabled
root 2710 1262 0 00:27 pts/2 00:00:00 /bin/bash
root 2864 1262 0 00:38 pts/4 00:00:00 /bin/bash
Homma's Slide 2015
docker run実行プロセス②
• 構成としてはこのようになっているようです。
24
docker-daemon
(/usr/bin/docker)
/bin/bash
/bin/bash
/dev/ptmx
/dev/ptmx
仮想端末
docker run -it -name centos_homma
_7 centos:7 /bin/bash
docker run -it -name centos_homma
_7_2 centos:7 /bin/bash
docker run -it -name centos_homma
_7 centos:7 /bin/bash
docker run -it -name centos_homma
_7_2 centos:7 /bin/bash
キーボード入力
画面出力
キーボード入力
画面出力
UNIXドメイン
ソケット通信
/var/lib/docker.sock
でLISTENしている
eventfdも使用
こういう関係なので、attachが複数可能なようですね。
プロセスを起動
親子の関係はそのまま

More Related Content

PDF
Dockerのディスクについて ~ファイルシステム・マウント方法など~
PPTX
OpenStack マルチノード環境構築
PDF
Dockerイメージ管理の内部構造
PDF
OpenStack(RDO/Grizzly) ダッシュボード利用演習
PDF
Personal Cloud Automation
PDF
2015-01-27 Introduction to Docker
PDF
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
PDF
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月
Dockerのディスクについて ~ファイルシステム・マウント方法など~
OpenStack マルチノード環境構築
Dockerイメージ管理の内部構造
OpenStack(RDO/Grizzly) ダッシュボード利用演習
Personal Cloud Automation
2015-01-27 Introduction to Docker
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
OpenStack検証環境構築・トラブルシューティング入門 - OpenStack最新情報セミナー 2014年8月

What's hot (20)

PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
PPTX
ラズパイ2で動く Docker PaaSを作ってみたよ
PDF
CloudFoundry 2 on Apache CloudStack 4.2.1
PDF
Using Kubernetes on Google Container Engine
PDF
爆速プレビュープロキシ pool
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
PDF
CentOS Linux 8 の EOL と対応策の検討
PDF
あの日実行したコンテナの名前を僕達はまだ知らない。
PDF
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
PDF
環境構築自動化ツールのご紹介
PDF
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
PDF
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
PDF
Docker 9 tips~意外と知られていない日常で役立つ便利技
PDF
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
PDF
Docker volume基礎/Project Longhorn紹介
PDF
Dive into dockerネットワーク
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
PPTX
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
PPTX
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
PDF
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
ラズパイ2で動く Docker PaaSを作ってみたよ
CloudFoundry 2 on Apache CloudStack 4.2.1
Using Kubernetes on Google Container Engine
爆速プレビュープロキシ pool
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
CentOS Linux 8 の EOL と対応策の検討
あの日実行したコンテナの名前を僕達はまだ知らない。
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
環境構築自動化ツールのご紹介
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
Docker 9 tips~意外と知られていない日常で役立つ便利技
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
Docker volume基礎/Project Longhorn紹介
Dive into dockerネットワーク
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
Ad

Similar to Docker調査20150704 (20)

PDF
Docker入門: コンテナ型仮想化技術の仕組みと使い方
PDF
Dockerハンズオン
PDF
Dockerハンズオン
PDF
コンテナ情報交換会2
PPTX
今さら聞けない人のためのDocker超入門 - KOF
PPTX
今さら聞けない人のためのDocker超入門
PDF
Docker最新動向2017秋+セキュリティの落とし穴
PDF
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
PPTX
今さら聞けない人のためのDocker超入門
PDF
Docker社内勉強会
PDF
Dockerイメージの理解とコンテナのライフサイクル
PPTX
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
PDF
Dockerの仕組みとIIJ社内での利用例
PDF
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
PPTX
第一回コンテナ情報交換会@関西
PDF
DockerとDocker Hubの操作と概念
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PPTX
Dockerを使ってみよう
PDF
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
PDF
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Dockerハンズオン
Dockerハンズオン
コンテナ情報交換会2
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門
Docker最新動向2017秋+セキュリティの落とし穴
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
今さら聞けない人のためのDocker超入門
Docker社内勉強会
Dockerイメージの理解とコンテナのライフサイクル
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
Dockerの仕組みとIIJ社内での利用例
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
第一回コンテナ情報交換会@関西
DockerとDocker Hubの操作と概念
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Dockerを使ってみよう
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
Rancher/Kubernetes入門ハンズオン資料~第2回さくらとコンテナの夕べ #さくらの夕べ 番外編
Ad

Docker調査20150704

  • 2. Homma's Slide 2015 dockerのインストール • CentOS 7.1(1503)を利用する。 • dockerのインストールはyum。 – yum install -y docker • docker • audit-libs-python • checkpolicy • docker-selinux • libcgroup • libsemanage-python • setools-libs 等がインストールされます。 2
  • 3. Homma's Slide 2015 注意 • 以下の事は追加で実施しておいた方が良いようで す。 – SELinuxの停止 • /etc/selinux/config – firewalldの停止 • systemctrl stop firewalld.service • systemctrl disable firewalld.service ※私はまだ実施していません。 3
  • 4. Homma's Slide 2015 dockerの起動 • dockerを制御しているのは、docker-daemonです。 – 起動していない場合は、エラーが表示されます。 • dockerを起動します。 – もう一度、docker psコマンドを実行します。 問題なくなりましたね。 # docker ps FATA[0000] Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS? # systemctl start docker.service # systemctl enable docker.service ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service' # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4
  • 5. Homma's Slide 2015 dockerプロセスは? • dockerプロセスを見ると、1プロセス起動しています。 • systemctlで見てましょう やっぱり、dockerプロセスのみとなっていますね。 # ps -ef | grep docke[r] root 12692 1 0 19:15 ? 00:00:00 /usr/bin/docker -d --selinux-enabled # systemctl status docker.service docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled) Active: active (running) since 土 2015-07-04 19:15:56 JST; 8min ago Docs: http://docs.docker.com Main PID: 12692 (docker) CGroup: /system.slice/docker.service └─12692 /usr/bin/docker -d --selinux-enabled 5
  • 6. Homma's Slide 2015 dockerのファイルディスクリプタ • dockerプロセスのファイルディスクリプタ # lsof -p 12692 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME docker 12692 root cwd DIR 253,0 4096 128 / docker 12692 root rtd DIR 253,0 4096 128 / docker 12692 root txt REG 253,0 13530078 68275192 /usr/bin/docker docker 12692 root mem REG 253,0 88720 134311240 /usr/lib64/libgcc_s-4.8.3-20140911.so.1 docker 12692 root mem REG 253,0 44088 134312941 /usr/lib64/librt-2.17.so docker 12692 root mem REG 253,0 153184 134312958 /usr/lib64/liblzma.so.5.0.99 docker 12692 root mem REG 253,0 398272 134312991 /usr/lib64/libpcre.so.1.2.0 docker 12692 root mem REG 253,0 73968 134314313 /usr/lib64/libudev.so.1.4.0 docker 12692 root mem REG 253,0 288320 134312965 /usr/lib64/libsepol.so.1 docker 12692 root mem REG 253,0 147120 134313002 /usr/lib64/libselinux.so.1 docker 12692 root mem REG 253,0 19512 134312917 /usr/lib64/libdl-2.17.so docker 12692 root mem REG 253,0 2107760 134312911 /usr/lib64/libc-2.17.so docker 12692 root mem REG 253,0 300216 134635598 /usr/lib64/libdevmapper.so.1.02 docker 12692 root mem REG 253,0 753200 134313178 /usr/lib64/libsqlite3.so.0.8.6 docker 12692 root mem REG 253,0 141616 134312937 /usr/lib64/libpthread-2.17.so docker 12692 root mem REG 253,0 164336 134312904 /usr/lib64/ld-2.17.so docker 12692 root 0r CHR 1,3 0t0 1028 /dev/null docker 12692 root 1u unix 0xffff8800369abc00 0t0 33103 socket docker 12692 root 2u unix 0xffff8800369abc00 0t0 33103 socket docker 12692 root 3r CHR 1,9 0t0 1033 /dev/urandom docker 12692 root 4u unix 0xffff8800b337f080 0t0 33998 /var/run/docker.sock docker 12692 root 5u CHR 10,236 0t0 1299 /dev/mapper/control docker 12692 root 6u a_inode 0,9 0 6143 [eventpoll] docker 12692 root 8u REG 253,0 5120 201972908 /var/lib/docker/linkgraph.db docker 12692 root 9u unix 0xffff8800369ab840 0t0 33248 socket docker 12692 root 10r a_inode 0,9 0 6143 inotify 6
  • 7. Homma's Slide 2015 dockerの通信 • 先ほど、dockerを起動していないときにエラーが表 示されていましたが、dockerプロセスが 「/var/run/docker.sock」を開いています。 • つまり、dockerコマンドはUNIXドメインソケッ ト「/var/run/docker.sock」を使って通信をし ているということだと想像がつきます。 # docker ps FATA[0000] Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS? # lsof -p 12692 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ... docker 12692 root 3r CHR 1,9 0t0 1033 /dev/urandom docker 12692 root 4u unix 0xffff8800b337f080 0t0 33998 /var/run/docker.sock ... 7
  • 8. Homma's Slide 2015 他にdocker-daemonで気付くこと① • 開いているファイルディスクリプタ(FD)を見ると… – /dev/urandomからランダムデータを取り出している – /dev/mapper/control:Device-Mapper が使用するデバイ スファイル – [eventpoll]:epollを使用してFDの監視をしていますね。 – inotify:inotifyAPIを使ってファイルシステムのイベントを監 視していますね。 # lsof -p 12692 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ... docker 12692 root 0r CHR 1,3 0t0 1028 /dev/null docker 12692 root 1u unix 0xffff8800369abc00 0t0 33103 socket docker 12692 root 2u unix 0xffff8800369abc00 0t0 33103 socket docker 12692 root 3r CHR 1,9 0t0 1033 /dev/urandom docker 12692 root 4u unix 0xffff8800b337f080 0t0 33998 /var/run/docker.sock docker 12692 root 5u CHR 10,236 0t0 1299 /dev/mapper/control docker 12692 root 6u a_inode 0,9 0 6143 [eventpoll] docker 12692 root 8u REG 253,0 5120 201972908 /var/lib/docker/linkgraph.db docker 12692 root 9u unix 0xffff8800369ab840 0t0 33248 socket docker 12692 root 10r a_inode 0,9 0 6143 inotify 8
  • 9. Homma's Slide 2015 他にdocker-daemonで気付くこと② • 開いているファイルディスクリプタ(FD)を見ると… – /var/lib/docker/linkgraph.db # lsof -p 12692 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ... docker 12692 root 0r CHR 1,3 0t0 1028 /dev/null docker 12692 root 1u unix 0xffff8800369abc00 0t0 33103 socket docker 12692 root 2u unix 0xffff8800369abc00 0t0 33103 socket docker 12692 root 3r CHR 1,9 0t0 1033 /dev/urandom docker 12692 root 4u unix 0xffff8800b337f080 0t0 33998 /var/run/docker.sock docker 12692 root 5u CHR 10,236 0t0 1299 /dev/mapper/control docker 12692 root 6u a_inode 0,9 0 6143 [eventpoll] docker 12692 root 8u REG 253,0 5120 201972908 /var/lib/docker/linkgraph.db docker 12692 root 9u unix 0xffff8800369ab840 0t0 33248 socket docker 12692 root 10r a_inode 0,9 0 6143 inotify # file /var/lib/docker/linkgraph.db /var/lib/docker/linkgraph.db: SQLite 3.x database 9
  • 10. Homma's Slide 2015 dockerのイメージ取得 • docker search/docker pull /docker images # docker search centos INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/centos The official build of CentOS. 1097 [OK] docker.io docker.io/tutum/centos Centos image with SSH access. For the root... 13 [OK] docker.io docker.io/blalor/centos Bare-bones base CentOS 6.5 image 9 [OK] docker.io docker.io/torusware/speedus-centos Always updated official CentOS docker imag... 6 [OK] docker.io docker.io/million12/centos-supervisor Base CentOS-7 with supervisord launcher, h... 5 [OK] docker.io docker.io/jdeathe/centos-ssh CentOS-6 6.6 x86_64 / EPEL Repo. / OpenSSH... 3 [OK] docker.io docker.io/jdeathe/centos-ssh-mysql CentOS-6 6.6 x86_64 / MySQL. 2 [OK] docker.io docker.io/layerworx/centos A general CentOS 6 image with the EPEL6 an... 2 [OK] docker.io docker.io/nathonfowlie/centos-jre Latest CentOS image with the JRE pre-insta... 0 [OK] docker.io docker.io/pdericson/centos Docker image for CentOS 0 [OK] # docker pull centos latest: Pulling from docker.io/centos f1b10cd84249: Pull complete c852f6d61e65: Pull complete 7322fbe74aa5: Already exists docker.io/centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Digest: sha256:a4627c43bafc86705af2e8a5ea1f0ed34fbf27b6e7a392e5ee45dbd4736627cc Status: Downloaded newer image for docker.io/centos:latest # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos latest 7322fbe74aa5 2 weeks ago 172.2 MB 10
  • 11. Homma's Slide 2015 dockerイメージのtag? • tagはどうやって検索するのでしょう? – とりあえず、以下のページで見ることができます。 – https://registry.hub.docker.com/_/centos/ 11
  • 12. Homma's Slide 2015 CentOSの5, 6, 7をダウンロードする • docker pull [レポジトリ]:[タグ名]でダウンロードしま す 。CentOS 6のタグは6 またはcentos6です。 12 # docker pull centos:6 6: Pulling from docker.io/centos fb9cc58bde0c: Pull complete a005304e4e74: Already exists a005304e4e74: Pulling fs layer docker.io/centos:6: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Digest: sha256:b97f4793ca20d63de294ae9393fea91b699e7a2cc643219c0307c29d5e38a894 Status: Downloaded newer image for docker.io/centos:6 # docker pull centos:5 5: Pulling from docker.io/centos 9069226e092e: Already exists 9069226e092e: Pulling fs layer docker.io/centos:5: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Digest: sha256:0d37c897617ace3f65f9d05b791ae6fb8ae811199f532ef5f03443724200c829 Status: Downloaded newer image for docker.io/centos:5 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos 6 a005304e4e74 2 weeks ago 203.1 MB docker.io/centos latest 7322fbe74aa5 2 weeks ago 172.2 MB docker.io/centos 5 9069226e092e 10 weeks ago 284.1 MB
  • 13. Homma's Slide 2015 dockerから起動します。 • docker run -it –name (識別名) [リポジトリ名]:[タグ名] [コマンド] 13 # docker run -it -name centos_homma_7 centos:7 /bin/bash Warning: '-name' is deprecated, it will be replaced by '--name' soon. See usage. Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning. [root@db818fab31e5 /]# [root@db818fab31e5 /]# cat /etc/centos-release CentOS Linux release 7.1.1503 (Core) # docker run -it --name centos_homma_6 centos:6 /bin/bash Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning. [root@3aa349645c08 /]# cat /etc/centos-release [root@3aa349645c08 /]# cat /etc/centos-release CentOS release 6.6 (Final) [root@3aa349645c08 /]# # docker run -it --name centos_homma_5 centos:5 /bin/bash Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning. [root@d5589edcdca5 /]# [root@d5589edcdca5 /]# cat /etc/redhat-release CentOS release 5.11 (Final) CentOS 7 CentOS 6 CentOS 5 ※コンテナ内部からは、[Ctrl]+PQで抜けることができます。 この場合もdockerは動作中になります。
  • 14. Homma's Slide 2015 docker ps • docker ps で調べることができます。 • 「-a」を指定すると停止しているイメージも表示されま す。centos_homma_5だけが起動中です。 14 # docker ps –a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f76902fed8fb centos:5 "/bin/bash" 6 seconds ago Up 5 seconds centos_homma_5 3aa349645c08 centos:6 "/bin/bash" 12 minutes ago Exited (0) 5 minutes ago centos_homma_6 db818fab31e5 centos:7 "/bin/bash" 13 minutes ago Exited (0) 5 minutes ago centos_homma_7 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f76902fed8fb centos:5 "/bin/bash" 2 minutes ago Up 2 minutes centos_homma_5
  • 15. Homma's Slide 2015 docker attach① • [Ctrl]+PQで抜けた場合は、docker attachを使って再 接続できます。 戻れました。 15 # docker attach centos_homma_5 [root@f76902fed8fb /]# [root@f76902fed8fb /]# cat /etc/redhat-release CentOS release 5.11 (Final)
  • 16. Homma's Slide 2015 docker attach② • 少し、ここで面白いことをします。2つのターミナルから接続し た場合はどうなるでしょうか。 – 実は両方とも問題なく 接続できます。 16 ※上も下も、docker attachしたものです。 上で入力すると、下でも入力が表示され ます。また、同様にしたで入力した場合で も上で表示されます。 全く、同じ表示になっています。 片方でexitすると終わります…
  • 17. Homma's Slide 2015 /var/lib/docker/linkgraph.dbは? • ここで、docker-daemonが開いていたデータベースはどうなっ ているのでしょうか。 • 作成したコンテナを管理しているようですね。 17 # sqlite3 /var/lib/docker/linkgraph.db SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables edge entity sqlite> select * from entity; 0 3aa349645c08a75874c1e833c66cb1dc7db27b81ade238d21f81665df1f88d0e db818fab31e5c98a210767bd8e49cea6ef083554b52d5df60287abe7b3f45e16 f76902fed8fbbba4bcf05fed32592e02de32d95104450d92dae1b3fd7efec930 sqlite> select * from edge; db818fab31e5c98a210767bd8e49cea6ef083554b52d5df60287abe7b3f45e16|0|centos_homma_7 3aa349645c08a75874c1e833c66cb1dc7db27b81ade238d21f81665df1f88d0e|0|centos_homma_6 0||/ f76902fed8fbbba4bcf05fed32592e02de32d95104450d92dae1b3fd7efec930|0|centos_homma_5 sqlite> # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f76902fed8fb centos:5 "/bin/bash" 41 minutes ago Exited (0) 5 minutes ago centos_homma_5 3aa349645c08 centos:6 "/bin/bash" 53 minutes ago Exited (128) 46 minutes ago centos_homma_6 db818fab31e5 centos:7 "/bin/bash" 54 minutes ago Exited (128) 46 minutes ago centos_homma_7
  • 18. Homma's Slide 2015 コンテナを削除する • docker rm [コンテナ名]で削除できます。 – コンテナイメージが削除できました。 – sqliteDBも見てみると削除されているようですね。 18 # docker rm centos_homma_5 centos_homma_5 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3aa349645c08 centos:6 "/bin/bash" 57 minutes ago Exited (128) 50 minutes ago centos_homma_6 db818fab31e5 centos:7 "/bin/bash" 58 minutes ago Exited (128) 50 minutes ago centos_homma_7 [root@dockers ~]# sqlite3 /var/lib/docker/linkgraph.db SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> select * from edge; db818fab31e5c98a210767bd8e49cea6ef083554b52d5df60287abe7b3f45e16|0|centos_homma_7 3aa349645c08a75874c1e833c66cb1dc7db27b81ade238d21f81665df1f88d0e|0|centos_homma_6 0||/ sqlite> select * from entity; 0 3aa349645c08a75874c1e833c66cb1dc7db27b81ade238d21f81665df1f88d0e db818fab31e5c98a210767bd8e49cea6ef083554b52d5df60287abe7b3f45e16 sqlite>
  • 19. Homma's Slide 2015 dockerのファイルを見る • dockerのデータは/var/lib/dockerにあります。 19 [root@dockers docker]# ls -al /var/lib/docker/ 合計 24 drwx------. 9 root root 4096 7月 4 23:45 . drwxr-xr-x. 25 root root 4096 7月 4 22:16 .. drwx------. 2 root root 6 7月 4 23:14 containers drwx------. 5 root root 50 7月 4 21:40 devicemapper drwx------. 9 root root 4096 7月 4 22:02 graph drwx------. 2 root root 29 7月 4 19:15 init -rw-r--r--. 1 root root 5120 7月 4 23:44 linkgraph.db -rw------- 1 root root 279 7月 4 23:45 repositories-devicemapper drwx------. 2 root root 6 7月 4 22:02 tmp drwx------. 2 root root 26 7月 4 21:40 trust drwx------. 2 root root 6 7月 4 19:15 volumes
  • 20. Homma's Slide 2015 どのような格納されている? • 一度、dockerを停止して、/var/lib/dockerを削除して 確認していきます。 20 [root@dockers docker]# systemctl stop docker [root@dockers docker]# rm -rf /var/lib/docker/ [root@dockers docker]# systemctl start docker [root@dockers docker]# du -ah /var/lib/docker/ 0 /var/lib/docker/tmp 4.0K /var/lib/docker/devicemapper/metadata/transaction-metadata 4.0K /var/lib/docker/devicemapper/metadata/base 8.0K /var/lib/docker/devicemapper/metadata 293M /var/lib/docker/devicemapper/devicemapper/data 748K /var/lib/docker/devicemapper/devicemapper/metadata 293M /var/lib/docker/devicemapper/devicemapper 293M /var/lib/docker/devicemapper 0 /var/lib/docker/containers 0 /var/lib/docker/graph 0 /var/lib/docker/volumes 4.0K /var/lib/docker/repositories-devicemapper 0 /var/lib/docker/trust 8.0K /var/lib/docker/linkgraph.db 7.8M /var/lib/docker/init/dockerinit-1.6.2 7.8M /var/lib/docker/init 301M /var/lib/docker/
  • 21. Homma's Slide 2015 dockerイメージの保存場所は? • docker pullしてディレクトリを見てましょう 21 [root@dockers docker]# docker pull centos ... [root@dockers docker]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos latest 7322fbe74aa5 2 weeks ago 172.2 MB [root@dockers docker]# du -ah /var/lib/docker/ 0 /var/lib/docker/tmp 4.0K /var/lib/docker/devicemapper/metadata/transaction-metadata 4.0K /var/lib/docker/devicemapper/metadata/base 4.0K /var/lib/docker/devicemapper/metadata/f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639 4.0K /var/lib/docker/devicemapper/metadata/c852f6d61e65cddf1e8af1f6cd7db78543bfb83cdcd36845541cf6d9dfef20a0 4.0K /var/lib/docker/devicemapper/metadata/7322fbe74aa5632b33a400959867c8ac4290e9c5112877a7754be70cfe5d66e9 24K /var/lib/docker/devicemapper/metadata 484M /var/lib/docker/devicemapper/devicemapper/data 916K /var/lib/docker/devicemapper/devicemapper/metadata 485M /var/lib/docker/devicemapper/devicemapper 0 /var/lib/docker/devicemapper/mnt/f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639 0 /var/lib/docker/devicemapper/mnt/c852f6d61e65cddf1e8af1f6cd7db78543bfb83cdcd36845541cf6d9dfef20a0 0 /var/lib/docker/devicemapper/mnt/7322fbe74aa5632b33a400959867c8ac4290e9c5112877a7754be70cfe5d66e9 4.0K /var/lib/docker/devicemapper/mnt 485M /var/lib/docker/devicemapper 0 /var/lib/docker/containers 0 /var/lib/docker/graph/_tmp 4.0K /var/lib/docker/graph/f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639/layersize 4.0K /var/lib/docker/graph/f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639/json 8.0K /var/lib/docker/graph/f1b10cd842498c23d206ee0cbeaa9de8d2ae09ff3c7af2723a9e337a6965d639 4.0K /var/lib/docker/graph/c852f6d61e65cddf1e8af1f6cd7db78543bfb83cdcd36845541cf6d9dfef20a0/layersize 4.0K /var/lib/docker/graph/c852f6d61e65cddf1e8af1f6cd7db78543bfb83cdcd36845541cf6d9dfef20a0/json 8.0K /var/lib/docker/graph/c852f6d61e65cddf1e8af1f6cd7db78543bfb83cdcd36845541cf6d9dfef20a0 4.0K /var/lib/docker/graph/7322fbe74aa5632b33a400959867c8ac4290e9c5112877a7754be70cfe5d66e9/layersize 4.0K /var/lib/docker/graph/7322fbe74aa5632b33a400959867c8ac4290e9c5112877a7754be70cfe5d66e9/json 8.0K /var/lib/docker/graph/7322fbe74aa5632b33a400959867c8ac4290e9c5112877a7754be70cfe5d66e9 28K /var/lib/docker/graph このあたりが増えています。
  • 22. Homma's Slide 2015 dockerでコンテナを起動すると • docker runで起動するとファイルができました。 22 [root@dockers ~]# docker run -it -name centos_homma_7 centos:7 /bin/bash ... [root@dockers ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dc317e5ac1fe centos:7 "/bin/bash" 2 minutes ago Up 2 minutes centos_homma_7 [root@dockers ~]# du -ah /var/lib/docker/ | grep dc317e5ac1fe 4.0K /var/lib/docker/devicemapper/metadata/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852-init 4.0K /var/lib/docker/devicemapper/metadata/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852 0 /var/lib/docker/devicemapper/mnt/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852-init 0 /var/lib/docker/devicemapper/mnt/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852 4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/config.json 4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/hostconfig.json 4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/resolv.conf.hash 4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/resolv.conf 4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/hostname 4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/hosts 0 /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/secrets 4.0K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852/dc317e5ac1fe6291a57eee01 d486b01b7cb5b2249e205416ffa2d9b9d2a04852-json.log 32K /var/lib/docker/containers/dc317e5ac1fe6291a57eee01d486b01b7cb5b2249e205416ffa2d9b9d2a04852
  • 23. Homma's Slide 2015 docker run実行プロセス① • docker run で動作したコンテナはどういう風に動い ているんでしょうか。 – /bin/bashを2個実行させています。 – 起動させた/bin/bashは誰に作成されたのでしょうか。 – プロセスIDを見ると、docker-daemonから起動しています。 23 # ps -ef | grep docke[r] root 1262 1 0 00:20 ? 00:00:00 /usr/bin/docker -d --selinux-enabled root 2669 2619 0 00:27 pts/1 00:00:00 docker run -it -name centos_homma_7 centos:7 /bin/bash root 2826 2800 0 00:38 pts/3 00:00:00 docker run -it -name centos_homma_7_02 centos:7 /bin/bash # ps -ef | grep "/bin/bas[h]" root 2669 2619 0 00:27 pts/1 00:00:00 docker run -it -name centos_homma_7 centos:7 /bin/bash root 2710 1262 0 00:27 pts/2 00:00:00 /bin/bash root 2826 2800 0 00:38 pts/3 00:00:00 docker run -it -name centos_homma_7_02 centos:7 /bin/bash root 2864 1262 0 00:38 pts/4 00:00:00 /bin/bash # ps -ef | grep "126[2]" root 1262 1 0 00:20 ? 00:00:00 /usr/bin/docker -d --selinux-enabled root 2710 1262 0 00:27 pts/2 00:00:00 /bin/bash root 2864 1262 0 00:38 pts/4 00:00:00 /bin/bash
  • 24. Homma's Slide 2015 docker run実行プロセス② • 構成としてはこのようになっているようです。 24 docker-daemon (/usr/bin/docker) /bin/bash /bin/bash /dev/ptmx /dev/ptmx 仮想端末 docker run -it -name centos_homma _7 centos:7 /bin/bash docker run -it -name centos_homma _7_2 centos:7 /bin/bash docker run -it -name centos_homma _7 centos:7 /bin/bash docker run -it -name centos_homma _7_2 centos:7 /bin/bash キーボード入力 画面出力 キーボード入力 画面出力 UNIXドメイン ソケット通信 /var/lib/docker.sock でLISTENしている eventfdも使用 こういう関係なので、attachが複数可能なようですね。 プロセスを起動 親子の関係はそのまま