CentOS7でDockerを試してみた その弐


前回までのあらすじ

の前にちょっと補足を、今まで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を使えば環境を自由自在に使いまわせるという事か。

もうお腹いっぱいだ。

今日はここまで。

 

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *