いい加減DockerとECSを整理する①
Dockerの概念が腑に落ちないこと早1年。
そろそろこれじゃだめだって思い始めて、復習する万。
install方法は割愛しておくことにする。
というか忘れてしまった。
Mac High Sierra 10.13.5
$ docker -v Docker version 17.12.0-ce, build c97c6d6
docker-composeとやらも入っておる。
$ docker-compose -v docker-compose version 1.18.0, build 8dd22a9
まずはOSを起動してみる centosを使ってみる。 と、その前に、現在の状況を確認
現在起動しているコンテナを確認する。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hogee_web latest 13cc204c812e 9 days ago 881MB ruby 2.3.6 7ab6e81790b8 3 months ago 722MB myapp_web latest 1b99a62bd7f1 3 months ago 841MB <none> <none> 33139e4ab9e2 3 months ago 808MB mysql 5.7 5d4d51c57ea8 4 months ago 374MB ruby 2.3.0 7ca70eb2dfea 2 years ago 725MB
imageにはこんなものたちがある。
ここにはcentosはない。
続いて現在のdockerのプロセスを確認
すべてのコンテナを確認。
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 67c4c9131574 hogee_web "bundle exec rails s…" 8 days ago Exited (1) 8 days ago hogee_web_run_6 60fc65437813 hogee_web "bundle exec rails s…" 8 days ago Exited (1) 8 days ago hogee_web_run_5 0fb85edc2110 hogee_web "bundle exec rails s…" 8 days ago Exited (1) 8 days ago hogee_web_run_4 2c498cd732f6 hogee_web "bundle exec rake db…" 9 days ago Exited (0) 9 days ago hogee_web_run_3 e97a1e89c87e hogee_web "bundle exec rake db…" 9 days ago Exited (0) 9 days ago hogee_web_run_2 126811cf559f hogee_web "bundle exec rails s…" 9 days ago Exited (1) 8 days ago hogee_web_1 e78c4418f446 hogee_web "rails new . --force…" 9 days ago Exited (1) 9 days ago hogee_web_run_1 faed05fdd12c mysql:5.7 "docker-entrypoint.s…" 9 days ago Exited (255) 6 days ago 3306/tcp hogee_db_1 5a079a80a50c myapp_web "rails db:migrate" 3 months ago Exited (0) 3 months ago myapp_web_run_5 fa4cd6b00acc myapp_web "rails g scaffold us…" 3 months ago Exited (0) 3 months ago myapp_web_run_4 13c8f6ce670c myapp_web "rails db:create" 3 months ago Exited (0) 3 months ago myapp_web_run_3 2b96f67a9f7a myapp_web "bundle exec rails s…" 3 months ago Exited (255) 3 months ago 0.0.0.0:3000->3000/tcp myapp_web_1 858bc9dfd0c2 myapp_web "rails db:create" 3 months ago Exited (1) 3 months ago myapp_web_run_2 038519291a53 33139e4ab9e2 "rails new . --force…" 3 months ago Exited (0) 3 months ago myapp_web_run_1 91592f781321 mysql:5.7 "docker-entrypoint.s…" 3 months ago Exited (255) 3 months ago 3306/tcp myapp_db_1
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
現在動いているdockerのプロセスはない。
$ docker run -it centos:latest bash Unable to find image 'centos:latest' locally latest: Pulling from library/centos 7dc0dca2b151: Pull complete Digest: sha256:b67d21dfe609ddacf404589e04631d90a342921e81c40aeaf3391f6717fa5322 Status: Downloaded newer image for centos:latest [root@de5bdc2e3f95 /]#
処理終了までに数分かかりました。
docker run
はホスト名をつけて起動するコマンド。
この場合は、centosというイメージからdockerを実行せよ。
:latestは、タグで、ここでcentosのバージョンとかを指定できる。
-iは--interactive, Keep STDIN open even if not attached
インタラクティブなシェルとかで使えますと。
-tは--tty, Allocate a pseudo-TTY
pseudo-tty( text-terminal ) = 疑似端末 pseudo = 擬似 tty = 標準入出力となっている端末デバイス(制御端末、controlling terminal)の名前を表示するunixコマンドである。元来ttyとはteletypewriter(テレタイプライター)のことを指す。
`pseudo-tty` とは? - kz-engineer -SCRAP-
だいたいココらへんは$docker run --help
でオプションの意味が出てくるので、都度調べる。-it
は頻出。
bashはシェルの指定。
本来、bash以外のシェルでもログインできるか試してみたいところだが、あいにくbashとzshしか知らない。。。
zshはなんかinstallしなきゃいけない感じだった気がするので、こうするとbash以外に試せるものがない。(調べたら出てきたけど、サクッとはできなさそうで、そっちで詰まるのは本筋ではないので、割愛.)
一応zshでも試みてみるも、
$ docker run -it centos:latest zsh docker: Error response from daemon: OCI runtime create failed: container_linux.go:296: starting container process caused "exec: \"zsh\": executable file not found in $PATH": unknown.
そらそうやな。 ほかのとりあえず名前知っているシェルを手当たり次第試してみる。
$ docker run -it centos:latest tcsh docker: Error response from daemon: OCI runtime create failed: container_linux.go:296: starting container process caused "exec: \"tcsh\": executable file not found in $PATH": unknown. ERRO[0000] error waiting for container: context canceled
だめ。
$ docker run -it centos:latest tcsh docker: Error response from daemon: OCI runtime create failed: container_linux.go:296: starting container process caused "exec: \"tcsh\": executable file not found in $PATH": unknown. ERRO[0000] error waiting for container: context canceled
だめ。
$ docker run -it centos:latest sh sh-4.2# sh-4.2# echo $SHELL /bin/bash
やった!入れた!と思ってシェルを確認してみると、、、
これただのbashやんけ!!
と、そもそものbashとshの違いを調べてみると、
shはbashにシンボリックリンクを貼っているとのこと。
$ docker run -it centos:latest bash # ll /bin/ | grep sh -rwxr-xr-x 1 root root 964544 Apr 11 00:53 bash lrwxrwxrwx 1 root root 10 May 31 18:01 bashbug -> bashbug-64 -rwxr-xr-x 1 root root 6964 Apr 11 00:52 bashbug-64 -rws--x--x 1 root root 23960 Apr 11 06:50 chsh -rwxr-xr-x 1 root root 15864 Apr 12 18:44 lchsh lrwxrwxrwx 1 root root 19 May 31 18:02 setup-nsssysinit -> setup-nsssysinit.sh -rwxr-xr-x 1 root root 1539 May 16 15:20 setup-nsssysinit.sh lrwxrwxrwx 1 root root 4 May 31 18:01 sh -> bash -rwxr-xr-x 1 root root 37448 Apr 11 04:35 sha1sum -rwxr-xr-x 1 root root 41600 Apr 11 04:35 sha224sum -rwxr-xr-x 1 root root 41600 Apr 11 04:35 sha256sum -rwxr-xr-x 1 root root 41592 Apr 11 04:35 sha384sum -rwxr-xr-x 1 root root 41592 Apr 11 04:35 sha512sum -rwxr-xr-x 1 root root 10371 Apr 11 04:16 show-changed-rco -rwxr-xr-x 1 root root 16572 Apr 11 04:16 show-installed -rwxr-xr-x 1 root root 54216 Apr 11 04:35 shred -rwxr-xr-x 1 root root 50320 Apr 11 04:35 shuf -rwxr-xr-x 1 root root 15904 Apr 11 06:50 unshare
確かにシンボリックってる。
それはさておき、基本的にはbashとshはおんなじような動きをするらしい。
posixうんたらが違いだとか。
/bin/sh と /bin/bash の違い - 双六工場日誌
脱線したが、戻します。 dockerのcentosにログイン後、centosで有ることを確認しておきます。
[root@75ff963973c6 /]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)
いいですね。
コンテナを確認
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES de5bdc2e3f95 centos:latest "bash" 6 minutes ago Up 6 minutes vigilant_hoover
$ d ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES de5bdc2e3f95 centos:latest "bash" 7 minutes ago Up 7 minutes vigilant_hoover 67c4c9131574 hogee_web "bundle exec rails s…" 8 days ago Exited (1) 8 days ago hogee_web_run_6 . . .
STATUSがUPになっておりまする。
dockerのimageはどこに保存されるのか
調べてみると、docker for macのアプリののPreferenceから確認できると。
ネットにあった情報と微妙に違うが頑張って探した。
$ cd /Users/yoshii/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/ $ ls -lh total 13994832 -rw-r--r--@ 1 yoshii staff 64G 7 4 01:50 Docker.raw -rw-r--r-- 1 yoshii staff 64K 7 3 21:53 console-ring -rw-r--r-- 1 yoshii staff 64K 7 3 21:53 database.iso -rw-r--r-- 1 yoshii staff 3.3K 7 3 21:53 hyperkit.json -rw-r--r-- 1 yoshii staff 3B 7 3 21:53 hyperkit.pid -rw-r--r-- 1 yoshii staff 0B 2 9 18:10 lock drwxr-xr-x 2 yoshii staff 64B 2 9 18:10 log -rw-r--r-- 1 yoshii staff 36B 2 9 18:10 nic1.uuid -rw-r--r-- 1 yoshii staff 2B 7 3 21:53 pid -rw-r--r-- 1 yoshii staff 2.2K 7 3 21:53 syslog lrwxr-xr-x 1 yoshii staff 12B 7 3 21:53 tty -> /dev/ttys000
おいおい知らぬ間に64Gも使ってたのかよコイツ。。。
なんの情報を持ってんだが。。。
と思って、よくよく先程のDocker for Macの情報を見てみると、
Virtual disk image size: 64.0 GB (allocated: 7.2GB)
とな。
多分自分で最初の設定のときにこのくらいいったれーって64GBを用意しておいたけど、実際には7.2GBしか使われていないってことな気がしてきた。
確認します。
ll total 13994832 -rw-r--r--@ 1 yoshii staff 68719476736 7 4 01:50 Docker.raw -rw-r--r-- 1 yoshii staff 65536 7 3 21:53 console-ring -rw-r--r-- 1 yoshii staff 65536 7 3 21:53 database.iso -rw-r--r-- 1 yoshii staff 3419 7 3 21:53 hyperkit.json -rw-r--r-- 1 yoshii staff 3 7 3 21:53 hyperkit.pid -rw-r--r-- 1 yoshii staff 0 2 9 18:10 lock drwxr-xr-x 2 yoshii staff 64 2 9 18:10 log -rw-r--r-- 1 yoshii staff 36 2 9 18:10 nic1.uuid -rw-r--r-- 1 yoshii staff 2 7 3 21:53 pid -rw-r--r-- 1 yoshii staff 2256 7 3 21:53 syslog lrwxr-xr-x 1 yoshii staff 12 7 3 21:53 tty -> /dev/ttys000
68,719,476,736B
おっとそもそも64GBじゃないんかーいと思ったが、これは
>>> 64 * 1024 * 1024 * 1024 68719476736
でしたな。失敬。
$ docker run -it ubuntu:latest bash Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu 6b98dfc16071: Pull complete 4001a1209541: Pull complete 6319fc68c576: Pull complete b24603670dc3: Pull complete 97f170c87c6f: Pull complete Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d Status: Downloaded newer image for ubuntu:latest root@f0e98565c20b:/# root@f0e98565c20b:/# cat /etc/os-release NAME="Ubuntu" VERSION="18.04 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic
はい、ubuntuが入りました。
docker images REPOSITORY TAG IMAGE ID CREATED SIZE hogee_web latest 13cc204c812e 9 days ago 881MB ubuntu latest 113a43faa138 3 weeks ago 81.2MB centos latest 49f7960eb7e4 4 weeks ago 200MB ruby 2.3.6 7ab6e81790b8 3 months ago 722MB myapp_web latest 1b99a62bd7f1 3 months ago 841MB <none> <none> 33139e4ab9e2 3 months ago 808MB mysql 5.7 5d4d51c57ea8 4 months ago 374MB ruby 2.3.0 7ca70eb2dfea 2 years ago 725MB
docker images
によると、ubuntuは81.2MBらしいです。
先程のファイルサイズが増加しているか確認しようと思ったけど、
これは$ ls -l /Users/yoshii/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/
する必要もないですね。
そもそも/Users/yoshii/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.raw
のファイル容量がきりの良すぎる数字の時点でおかしかった。
これはDocker.rawファイルに全部情報がいい感じに入っているようだ。僕らからは確認のしようがない。
linuxだと、/var/lib/docker配下にできるらしいな。 一応やってみます。
linuxでdockerを起動
こういうときはEC2のt2.microインスタンスをサクッと立ち上げる。富豪だ。 ネットワークもこっちのほうが早いから、すぐAWS使っちゃう。富豪だ。
sudo su - yum install -y docker service docker start docker run -it centos:latest bash
とりあえずサクッとcentosがinstallできた。 一旦exitして、実態の在り処を探す。
# cd /var/lib/docker ll total 48 drwx------ 2 root root 4096 Jul 3 17:36 builder drwx--x--x 3 root root 4096 Jul 3 17:36 containerd drwx------ 3 root root 4096 Jul 3 17:36 containers drwx------ 3 root root 4096 Jul 3 17:36 image drwxr-x--- 3 root root 4096 Jul 3 17:36 network drwx------ 6 root root 4096 Jul 3 17:36 overlay2 drwx------ 4 root root 4096 Jul 3 17:36 plugins drwx------ 2 root root 4096 Jul 3 17:36 runtimes drwx------ 2 root root 4096 Jul 3 17:36 swarm drwx------ 2 root root 4096 Jul 3 17:36 tmp drwx------ 2 root root 4096 Jul 3 17:36 trust drwx------ 2 root root 4096 Jul 3 17:36 volumes # # # du -sh ./* 20K ./builder 116K ./containerd 48K ./containers 736K ./image 52K ./network 211M ./overlay2 20K ./plugins 4.0K ./runtimes 4.0K ./swarm 4.0K ./tmp 4.0K ./trust 28K ./volumes
怪しいのはoverlay2
ですね。
# ll overlay2/ total 16 drwx------ 4 root root 4096 Jul 3 17:38 2f040d74f70b4d498e644d0c04af7ee9a137881795cc377912871588dd4142b8 drwx------ 4 root root 4096 Jul 3 17:36 2f040d74f70b4d498e644d0c04af7ee9a137881795cc377912871588dd4142b8-init drwx------ 3 root root 4096 Jul 3 17:36 eb694a3cfd827ea603a03347037a4f50e537151e18aff3c8ab80482d274ebca0 drwx------ 2 root root 4096 Jul 3 17:36 l # # [root@ip-172-31-44-122 docker]# du -sh overlay2/* 32K overlay2/2f040d74f70b4d498e644d0c04af7ee9a137881795cc377912871588dd4142b8 40K overlay2/2f040d74f70b4d498e644d0c04af7ee9a137881795cc377912871588dd4142b8-init 211M overlay2/eb694a3cfd827ea603a03347037a4f50e537151e18aff3c8ab80482d274ebca0 16K overlay2/l
find /var/lib/docker/overlay2/. |wc 10705 10705 1268385
どうやらたくさんのファイル群が入っているようだ。
あまり踏み込まないようにしよう。
docker run -it ubuntu:latest bash Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu 6b98dfc16071: Pull complete 4001a1209541: Pull complete 6319fc68c576: Pull complete b24603670dc3: Pull complete 97f170c87c6f: Pull complete Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d Status: Downloaded newer image for ubuntu:latest root@67da5f8e8b2c:/#
容量を確認する。
[root@ip-172-31-44-122 docker]# du -sh ./* 20K ./builder 116K ./containerd 92K ./containers 1.1M ./image 52K ./network 297M ./overlay2 20K ./plugins 4.0K ./runtimes 4.0K ./swarm 4.0K ./tmp 4.0K ./trust 28K ./volumes
詳細も確認する。
[root@ip-172-31-44-122 overlay2]# ll /var/lib/docker/overlay2 total 44 drwx------ 3 root root 4096 Jul 3 17:45 06142c28a84ecc2757409fad89ad24c6e8d5e0f787937245c0c7ef34a8157db1 drwx------ 4 root root 4096 Jul 3 17:45 17cd521c63cb54de57f1918706cb950920b2664c0b93390f3c8ef60d55cef536 drwx------ 4 root root 4096 Jul 3 17:45 2d85d5672c17ce9441e77328e210bdcaad440cfadbbce39f32a46870aa51c6fc drwx------ 4 root root 4096 Jul 3 17:45 2d85d5672c17ce9441e77328e210bdcaad440cfadbbce39f32a46870aa51c6fc-init drwx------ 4 root root 4096 Jul 3 17:38 2f040d74f70b4d498e644d0c04af7ee9a137881795cc377912871588dd4142b8 drwx------ 4 root root 4096 Jul 3 17:36 2f040d74f70b4d498e644d0c04af7ee9a137881795cc377912871588dd4142b8-init drwx------ 4 root root 4096 Jul 3 17:45 4c69f1a2eea8fba87437187838a942c75fea48b50744718288c6f7e72529827e drwx------ 4 root root 4096 Jul 3 17:45 5e834467fed8e25a3ee8ce8c39b565171dd97bf7d4de5d9d86772144e18cea22 drwx------ 3 root root 4096 Jul 3 17:36 eb694a3cfd827ea603a03347037a4f50e537151e18aff3c8ab80482d274ebca0 drwx------ 4 root root 4096 Jul 3 17:45 f42660ffc61032bf307beaab41da57fe93acff57a59f8cc028a6baf1866c8b06 drwx------ 2 root root 4096 Jul 3 17:45 l
ubuntuのものと思われるものが増えている。
なるほど。
なるほど。
Dockerのファイル保存場所とか整理できたので、一旦ここまでにする。