前回までのあらすじ
の前にちょっと補足を、今までDockerと書いていたものだが、今ではDocker Engineと呼ばれるものになり、プラットフォーム全体をDockerということになったらしい。
という事で、今はDocker Engileのインストールが終わったところだ!
あらすじ終わり。
引き続き今回も@ITのいまさら聞けないDocker入門に沿っていきます。
KVMを試していた時のことを思い出すと、まずはQEMUを使ってVMを作り、普通にOSをインストールするというイメージだったが、今回はコンテナーを用意することになる。
Docker Hubというものを使えば、開発環境でDockerイメージ作成して、作成したイメージを共有、デプロイできると。
KVMの場合は、完全仮想化でヴァーチャルに土地を耕してあたかもそこにサーバーというビルを構築したように、その仮想サーバーにOSをインストールする仕組みだった。
Dokcerはイメージを使う。
以前、OpenStackをやったときにqcow2イメージを使って出来上がったOSを用意したけど、そっちの方に近い?
なんて、実際に試す前はこんな風に思っていたのだ。
ベースイメージはDocker Hub Registryというところにたくさんあるらしい。
しかも初期設定でDocker Hub Registryにアクセスするようになっているらしいから、たとえば社内で使うのだったりすると設定変更が必要なわけかしら。
参考サイトの通りUbuntuの最終版をとってみようか。
[root@dockerkencho ~]# docker pull ubuntu:latest Pulling repository ubuntu e54ca5efa2e9: Download complete 511136ea3c5a: Download complete d7ac5e4f1812: Download complete 2f4b4d6a4a06: Download complete 83ff768040a0: Download complete 6c37f792ddac: Download complete
お~、できた?のか?
ちょっと把握できないので、説明文を参考サイトから引用するぞ。
@IT「ダウンロードしたDockerイメージは、レジストリのイメージと区別するために「ローカルキャッシュ」と呼ぶこともあります。このローカルキャッシュからDockerコンテナーを実行します。」
という事らしい、しっかり読まないと訳分からんことになりそうだ。
[root@dockerkencho ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest e54ca5efa2e9 3 weeks ago 276.1 MB
・・・うーん、後に続く説明を読んだんだけど、ぶっとんでいて頭が追いついてない。
とにかくやってみるよ。
・DockerイメージからDockerコンテナーを作成、実行。
・ubuntuイメージからubuntu1コンテナーを作成、端末を開きbashを実行
[root@dockerkencho ~]# docker run -it --name ubuntu1 ubuntu /bin/bash root@14641c250fd3:/# root@14641c250fd3:/# ifconfig eth0 Link encap:Ethernet HWaddr b6:69:f5:81:ca:d5 inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::b469:f5ff:fe81:cad5/64 Scope:Link UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:20 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2308 (2.3 KB) TX bytes:578 (578.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
先に進む前に 言っておくッ! おれは今 Dockerを ほんのちょっぴりだが 体験した
い…いや… 体験したというよりは まったく理解を 超えていたのだが……
あ…ありのまま 今 起こった事を話すぜ!
「おれは CentOS7でコマンドを叩いていた いつのまにかUbuntuだった」
な… 何を言っているのか わからねーと思うが
おれも 何をされたのか わからなかった…
頭がどうにかなりそうだった… 催眠術だとか超スピードだとか
そんなチャチなもんじゃあ 断じてねえ
もっと恐ろしいものの片鱗を 味わったぜ…
ゴゴゴゴ・・・
てな感じです。
apt-get updateも普通にいけます。
root@14641c250fd3:/# apt-get update Ign http://archive.ubuntu.com trusty InRelease Ign http://archive.ubuntu.com trusty-updates InRelease Ign http://archive.ubuntu.com trusty-security InRelease Hit http://archive.ubuntu.com trusty Release.gpg Get:1 http://archive.ubuntu.com trusty-updates Release.gpg [933 B] Get:2 http://archive.ubuntu.com trusty-security Release.gpg [933 B] Hit http://archive.ubuntu.com trusty Release Get:3 http://archive.ubuntu.com trusty-updates Release [58.5 kB] Get:4 http://archive.ubuntu.com trusty-security Release [58.5 kB] Hit http://archive.ubuntu.com trusty/main Sources Hit http://archive.ubuntu.com trusty/restricted Sources Hit http://archive.ubuntu.com trusty/universe Sources Hit http://archive.ubuntu.com trusty/main amd64 Packages Hit http://archive.ubuntu.com trusty/restricted amd64 Packages Hit http://archive.ubuntu.com trusty/universe amd64 Packages Get:5 http://archive.ubuntu.com trusty-updates/main Sources [83.4 kB] Get:6 http://archive.ubuntu.com trusty-updates/restricted Sources [14 B] Get:7 http://archive.ubuntu.com trusty-updates/universe Sources [60.1 kB] Get:8 http://archive.ubuntu.com trusty-updates/main amd64 Packages [218 kB] Get:9 http://archive.ubuntu.com trusty-updates/restricted amd64 Packages [14 B] Get:10 http://archive.ubuntu.com trusty-updates/universe amd64 Packages [154 kB] Get:11 http://archive.ubuntu.com trusty-security/main Sources [31.8 kB] Get:12 http://archive.ubuntu.com trusty-security/restricted Sources [14 B] Get:13 http://archive.ubuntu.com trusty-security/universe Sources [6808 B] Get:14 http://archive.ubuntu.com trusty-security/main amd64 Packages [106 kB] Get:15 http://archive.ubuntu.com trusty-security/restricted amd64 Packages [14 B] Get:16 http://archive.ubuntu.com trusty-security/universe amd64 Packages [37.0 kB] Fetched 816 kB in 9s (87.2 kB/s) Reading package lists... Done
ちなみにこれはプロセスなので(QEMUもプロセスだったな)、Ctrl+Dで中断できる。
プロセスの終了とコンテナーの停止は連動するため、この時点でコンテナーubuntu1は停止状態ということのようだ。
すごいのは分かったので、参考サイトの方ももうちょっとで終わるので進めてしまおう。
nginxをインストールして、イメージを作って終わりだ。
[root@dockerkencho ~]# docker commit ubuntu1 take/nginx faa081e347ab0d4942d2858d704b110dc57f79995774ee76d4ec29ea402d640e [root@dockerkencho ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE take/nginx latest faa081e347ab 20 seconds ago 298.4 MB ubuntu latest e54ca5efa2e9 3 weeks ago 276.1 MB
イメージをバックグランドプロセスとして立ち上げて、アクセスしてみる。
80番は開けてないよ~。 [root@dockerkencho ~]# curl localhost:80 curl: (7) Failed connect to localhost:80; 接続を拒否されました バックグランドで~動かすと~ [root@dockerkencho ~]# docker run -d -p 80:80 --name nginx1 take/nginx /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf d980e86c1c97a6d5535e49a920c0cfb952b4c9d4c13965525505fd4fb0537ade 動いてる~。 [root@dockerkencho ~]# curl localhost:80 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
ifconfigを叩くとこんな風になっていた。
[root@dockerkencho ~]# ifconfig docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.42.1 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::5484:7aff:fefe:9799 prefixlen 64 scopeid 0x20<link> ether 56:84:7a:fe:97:99 txqueuelen 0 (Ethernet) RX packets 850 bytes 56384 (55.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1063 bytes 6516154 (6.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.24.80 netmask 255.255.255.0 broadcast 192.168.24.255 inet6 fe80::20c:29ff:fe2e:4aff prefixlen 64 scopeid 0x20<link> inet6 2001:a008:554c:0:20c:29ff:fe2e:4aff prefixlen 64 scopeid 0x0<global> ether 00:0c:29:2e:4a:ff txqueuelen 1000 (Ethernet) RX packets 137059 bytes 188559900 (179.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 30067 bytes 2598914 (2.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 14 bytes 1907 (1.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 14 bytes 1907 (1.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 veth9e08: flags=67<UP,BROADCAST,RUNNING> mtu 1500 inet6 fe80::c4ee:fff:fe89:b0e8 prefixlen 64 scopeid 0x20<link> ether c6:ee:0f:89:b0:e8 txqueuelen 1000 (Ethernet) RX packets 14 bytes 1862 (1.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 15 bytes 1119 (1.0 KiB) TX errors 0 dropped 1 overruns 0 carrier 0 collisions 0
なるほどなぁ、Docker Hubを使えば環境を自由自在に使いまわせるという事か。
もうお腹いっぱいだ。
今日はここまで。