あとちょっとだけ使ってみたログを残す。
dockerをinstall
一度失敗しましたが、無事インストールできました。
失敗の内容は、なぜかyum install docker
でインストールすると、yum
は成功するけど、何故か起動しない事態が発生。
$ systemctl docker status -l Unknown operation 'docker'. $ systemctl status -l docker docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled) Active: failed (Result: timeout) since 2015-12-10 11:03:07 JST; 44min ago Docs: http://docs.docker.com Main PID: 20256 12 10 11:00:38 localhost.localdomain docker[20256]: time="2015-12-10T11:00:38.380811795+09:00" level=info msg="Listening for HTTP on unix (/var/run/docker.sock)" 12 10 11:00:38 localhost.localdomain docker[20256]: time="2015-12-10T11:00:38.384129386+09:00" level=error msg="WARNING: No --storage-opt dm.thinpooldev specified, using loopback; this configuration is strongly discouraged for production use" 12 10 11:01:37 localhost.localdomain systemd[1]: docker.service operation timed out. Terminating. 12 10 11:03:07 localhost.localdomain systemd[1]: docker.service stopping timed out (2). Killing. 12 10 11:03:07 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine. 12 10 11:03:07 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
泣きそうなところを、dockerのドキュメントに助けられました。感謝!(下に記載)
$ yum update $ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF $ yum install docker-engine # これで起動した! $ /bin/systemctl start docker.service
dockerを使う
とりあえず使ってみます。
$ docker pull centos:6.6 $ docker run centos:6.6 /bin/echo "Hello, World" Hello, World
ん? いまいちよくわからん。
# dockerでpullしたイメージで実行 $ docker run centos:6.6 /bin/cat /etc/redhat-release CentOS release 6.6 (Final) # Host OSで実行 $ cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core)
すげぇ! vagrantより簡単なイメージです。
docker の os image(?)にapacheをインストールしてみる
dockerに乗っかったosのことなんていうの? os image ?
よくわかりませんが、とりあえずコンテナを積んでいきます。
# コンテナにログイン $ docker run -i -t centos:6.6 /bin/bash [root@d196fb548cad /]# # <- 変わった! $ yum install httpd Installed: httpd.x86_64 0:2.2.15-47.el6.centos Dependency Installed: apr.x86_64 0:1.3.9-5.el6_2 apr-util.x86_64 0:1.3.9-3.el6_0.1 apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 httpd-tools.x86_64 0:2.2.15-47.el6.centos mailcap.noarch 0:2.1.31-2.el6 redhat-logos.noarch 0:60.0.14-12.el6.centos Complete!
設定を追加していきましょう。
[root@d196fb548cad /]# echo 'docker 6.6 contena apache' >/var/www/html/index.html [root@d196fb548cad /]# /etc/init.d/httpd start Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3 for ServerName [ OK ] j [root@d196fb548cad /]# ps aux | grep httpd root 68 0.0 0.2 175796 3752 ? Ss 04:18 0:00 /usr/sbin/httpd apache 70 0.0 0.1 175796 2252 ? S 04:18 0:00 /usr/sbin/httpd apache 71 0.0 0.1 175796 2252 ? S 04:18 0:00 /usr/sbin/httpd apache 72 0.0 0.1 175796 2252 ? S 04:18 0:00 /usr/sbin/httpd apache 73 0.0 0.1 175796 2252 ? S 04:18 0:00 /usr/sbin/httpd apache 74 0.0 0.1 175796 2252 ? S 04:18 0:00 /usr/sbin/httpd apache 75 0.0 0.1 175796 2252 ? S 04:18 0:00 /usr/sbin/httpd apache 76 0.0 0.1 175796 2252 ? S 04:18 0:00 /usr/sbin/httpd apache 77 0.0 0.1 175796 2252 ? S 04:18 0:00 /usr/sbin/httpd root 79 0.0 0.0 9720 832 ? S+ 04:18 0:00 grep httpd [root@d196fb548cad /]# curl http://127.0.0.1/ docker 6.6 contena apache
エラーがでているけど、起動しましたね!
ちなみにexit
でHostへ戻れます。
・・・これは外からアクセスすることができるのかな?
その場合はポートフォワードをオプションとして追記してログインすればいいらしい。
$ docker run -i -t -p 50051:80 centos:6.6 /bin/bash [root@3007371f9d17 /]# /etc/init.d/httpd start -bash: /etc/init.d/httpd: そのようなファイルやディレクトリはありません
(^ω^; アレ・・・?
どうやら一度作成した内容はログアウトすると消えるっぽいですね。。。
と、おもったけどそうでもないらしい。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3007371f9d17 centos:6.6 "/bin/bash" 17 minutes ago Exited (0) 2 minutes ago trusting_hoover d196fb548cad centos:6.6 "/bin/bash" 24 minutes ago Exited (0) 18 minutes ago jovial_keller ...
なんか作業ログみたいのが残っているので、それをimages
化して、そこにログインすればいいらしい。
# docker commit CONTAINER ID imagesの名前(?) $ docker commit d196fb548cad centos:6.6/httpd a1c0870c05a4a664efa56f7f42129258655b73c49887d24cc69fe9f1cf7f7ba6
次はこいつにログインすればいい
$ docker run -i -t -p 50051:80 centos:6.6/httpd [root@5e2dfbfe3e22 /]# [root@5e2dfbfe3e22 /]# /etc/init.d/httpd start [root@5e2dfbfe3e22 /]# curl http://127.0.0.1/ docker 6.6 contena apache # コンテナを終了せずに抜ける「Ctrl + p, Ctrl + q」 [root@5e2dfbfe3e22 /]# [root@localhost ~]# <- 帰って来た
そしてHostからhttp://127.0.0.1:50051/
へアクセス
$ curl http://127.0.0.1:50051/ docker 6.6 contena apache
いいねいいねいいね!
停止しないで抜けると、プロセスは生きたままっぽい
$ ps aux | grep docker ... root 27306 0.0 0.7 165860 13272 ? Sl 13:41 0:00 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 50051 -container-ip 172.17.0.3 -container-port 80
停止するにはログインしなおしてexit
すればいい
再度ログインする方法はattach
ってコマンドでできたけど、これが正しいかどうかわからない(´・ω・`)
# 何故か名前が使えない... $ docker attach 5e2dfbfe3e22 [root@5e2dfbfe3e22 /]# ps aux | grep httpd root 21 0.0 0.1 175796 1920 ? Ss 04:04 0:00 /usr/sbin/httpd ... [root@5e2dfbfe3e22 /]# exit exit [root@localhost ~]#