読者です 読者をやめる 読者になる 読者になる

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近はAngular2をさわりはじめたお(^ω^ = ^ω^)

dockerをcentos7にインストール

CentOS CentOS7 Docker

スポンサードリンク

あとちょっとだけ使ってみたログを残す。

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 ~]# 

参考にした記事

docs.docker.com

qiita.com

qiita.com