インフラエンジニアXの備忘

とある企業のシステム部門のインフラエンジニアです。忘れっぽい自分のメモ書きとしてこのブログを使用します。

続・Dockerとはなんぞ?

Dockerについて全然調べていなくって、今さら試してみたメモ・続
前回は起動とか停止しとかその辺を実施したのだが
今回またいろいろと試してみる。

環境などは前回のVMをそのまま利用する。

目的

  • Dockerがどんなもんなのかを確認する。


メモ

VMでの作業


docker runでコンテナを立ち上げ、apacheがインストールされているか確認。
その後yumコマンドでapacheをインストールし
インストールの確認をする。

[vagrant@localhost ]$ docker run -i -t centos:6.6 /bin/bash
[root@00436f484a55 /]#
[root@00436f484a55 /]# rpm -qa | grep httpd
[root@00436f484a55 /]# yum insatll httpd
Loaded plugins: fastestmirror
Loaded plugins: fastestmirror
Setting up Install Process
base                                                             | 3.7 kB     00:00
base/primary_db                                                  | 4.6 MB     00:01
extras                                                           | 3.4 kB     00:00
 |
 |
 |
Complete!
[root@00436f484a55 /]#
[root@00436f484a55 /]# rpm -qa | grep httpd
httpd-tools-2.2.15-39.el6.centos.x86_64
httpd-2.2.15-39.el6.centos.x86_64
[root@00436f484a55 /]# exit
exit
[vagrant@localhost ]$


実行しているdockerコンテナがあるかどうかの確認

[vagrant@localhost ]$ docker ps
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                 NAMES
[vagrant@localhost ]$ 


終了したdockerコンテナを含めてコンテナ一覧を表示

[vagrant@localhost ~]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS                 NAMES
00436f484a55        centos:6.6          "/bin/bash"            24 minutes ago      Exited (0) 15 minutes ago                         sleepy_ritchie
da4a862df833        centos:6.6          "/bin/bash"            19 hours ago        Exited (0) 19 hours ago                           cocky_euclid
958fc2a6e01e        centos:6.6          "/bin/bash"            19 hours ago        Exited (0) 19 hours ago                           thirsty_bardeen
[vagrant@localhost ~]$


apacheをインストールした00436f484a55のコンテナを起動して接続し
apacheがインストールされている状態かどうかを確認

[vagrant@localhost ~]$ docker start 00436f484a55
00436f484a55
[vagrant@localhost ~]$ docker attach 00436f484a55

[root@00436f484a55 /]#
[root@00436f484a55 /]#
[root@00436f484a55 /]#
[root@00436f484a55 /]# rpm -qa | grep httpd
httpd-tools-2.2.15-39.el6.centos.x86_64
httpd-2.2.15-39.el6.centos.x86_64
[root@00436f484a55 /]#


おお…。
ではこちらをイメージとして登録。
イメージとして登録し、runの時にこのイメージを指定することで
httpdのインストールされたイメージを起動することが可能。

[vagrant@localhost ~]$ docker commit 00436f484a55 hajimenovic:test
2a6aaf4aca7cdb04042fb5395dbc3a64419a45fd9949a2ab866a9691f4d36052
[vagrant@localhost ~]$
[vagrant@localhost ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
hajimenovic         test                2a6aaf4aca7c        17 seconds ago      280.7 MB
centos              lamp                1391b4440848        19 hours ago        758 MB
centos              6.6                 0bc55ae673f7        3 weeks ago         215.8 MB
centos              centos6             f6808a3e4d9e        3 weeks ago         215.7 MB
[vagrant@localhost ~]$


では、このイメージを利用して/bin/bashを起動してログインしてみる。

[vagrant@localhost ~]$ docker run -i -t hajimenovic:test /bin/bash
[root@b94f85bb64b8 /]#
[root@b94f85bb64b8 /]#
[root@b94f85bb64b8 /]# rpm -qa | grep httpd
httpd-tools-2.2.15-39.el6.centos.x86_64
httpd-2.2.15-39.el6.centos.x86_64
[root@b94f85bb64b8 /]#
[root@b94f85bb64b8 /]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.3  14728  1864 ?        Ss   04:29   0:00 /bin/bash
root        18  0.0  0.2  16660  1144 ?        R+   04:30   0:00 ps aux
[root@b94f85bb64b8 /]#
[root@b94f85bb64b8 /]#
[root@b94f85bb64b8 /]# exit
exit
[vagrant@localhost ~]$

起動→インストールの確認→プロセスの確認→コンテナ終了

はやい…


docker コンテナの破棄

[vagrant@localhost ~]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS                   NAMES
b94f85bb64b8        hajimenovic:test    "/bin/bash"            8 minutes ago       Exited (0) 7 minutes ago                            dreamy_colden
00436f484a55        centos:6.6          "/bin/bash"            24 minutes ago      Exited (0) 15 minutes ago                           sleepy_ritchie
da4a862df833        centos:6.6          "/bin/bash"            19 hours ago        Exited (0) 19 hours ago                             cocky_euclid
958fc2a6e01e        centos:6.6          "/bin/bash"            19 hours ago        Exited (0) 19 hours ago                             thirsty_bardeen
[vagrant@localhost ~]$
[vagrant@localhost ~]$ docker rm 00436f484a55
00436f484a55
[vagrant@localhost ~]$
[vagrant@localhost ~]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS                NAMES
b94f85bb64b8        hajimenovic:test    "/bin/bash"            23 minutes ago      Exited (0) 22 minutes ago                        dreamy_colden
da4a862df833        centos:6.6          "/bin/bash"            21 hours ago        Exited (0) 21 hours ago                          cocky_euclid
958fc2a6e01e        centos:6.6          "/bin/bash"            21 hours ago        Exited (0) 21 hours ago                          thirsty_bardeen
[vagrant@localhost ~]$

docker ps -a コマンドで一覧を表示して、いらないコンテナをdocker rm CTIDで削除する。
仮に-dでバックグラウンドで動いているコンテナを削除する場合については
docker rm -f CTIDとなる


docker イメージの破棄

[vagrant@localhost ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
hajimenovic         test                2a6aaf4aca7c        29 minutes ago      280.7 MB
centos              lamp                1391b4440848        20 hours ago        758 MB
centos              6.6                 0bc55ae673f7        3 weeks ago         215.8 MB
centos              centos6             f6808a3e4d9e        3 weeks ago         215.7 MB
[vagrant@localhost ~]$
[vagrant@localhost ~]$
[vagrant@localhost ~]$ docker rmi hajimenovic:test
Error response from daemon: Conflict, cannot delete 2a6aaf4aca7c because the container b94f85bb64b8 is using it, use -f to force
FATA[0000] Error: failed to remove one or more images
[vagrant@localhost ~]$

docker images コマンドでイメージの一覧を表示して
docker rmi hajimenovic:testでイメージを消去する。

docker ps -a コマンドでコンテナ一覧を取得したときに
一つでも消去するイメージを使っているコンテナがあるとエラーになる。
強制的に削除する場合はdocker rmi -f で消す。


基本的な動作方法や概念は少しずつわかってきた。
コンテナを起動させて、必要なアプリケーションをインストールして、イメージとして保存。
これを繰り返してコンテナを構築していくというのが基本的な流れとなる。

Dockerfileというテキストファイルにて、あらかじめ定義した環境を構築するようにしたり
他の人の作成したLAMP環境を動かしたり、sshを動作させてログインしたりできるようだけど…。
まだ具体的な使い方がわからないので、これから試してみます。

また根本的な課題なんですが、Dockerを自分の中でどのように使うべきなのか
どういう使い方がベストなのか、というところがまだちょっと霧の中といった感じ。