この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
前回まででdockerインストールからコンテナイメージの作成までが完了しました。
今回は色々とdockerを触って行きたいと思います。
WHAT IS A GOOD IDEA.
良いアイデアとは何か?
果たして、dockerはエンジニアにとって良いアイデアになりえるのか・・・。
(既になってる、という噂も)
作成したコンテナに接続
まず、コンテナイメージがある事を確認します。
・コンテナイメージの確認
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/centos 7 fd44297e2ddb 6 days ago 215.7 MB
docker.io/centos centos7 fd44297e2ddb 6 days ago 215.7 MB
docker.io/centos latest fd44297e2ddb 6 days ago 215.7 MB
# docker run centos:centos7 cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)
・CentOS7の起動、bashを実行
# docker run -it centos:centos7 /bin/bash
[root@d388c7e43356 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 23:43 ? 00:00:00 /bin/bash
root 19 1 0 23:43 ? 00:00:00 ps -ef
[root@d388c7e43356 /]#
お、繋がった。
dockerの挙動を確認
次に適当に空ファイルを作成してみる。
・dockerに接続して、空ファイルを作成
# docker run -it centos:centos7 /bin/bash
[root@a774bb68164f /]# cd
[root@a774bb68164f ~]# touch hoge
[root@a774bb68164f ~]# ll
total 0
-rw-r--r-- 1 root root 0 Apr 28 23:47 hoge
[root@a774bb68164f ~]# exit
exit
再度接続して、空ファイルの存在を確認
#[root@test001 ~]# docker run -it centos:centos7 /bin/bash
[root@94787a9ef78c /]# cd
[root@94787a9ef78c ~]# ll
total 0
あれ、さっき作ったはずのファイルが無くなっている。
と、これがdockerの仕様なのか。「不変のインフラ」的な。
”何も指定しないとコンテナイメージは基本的に常に新しい状態で起動する”
ちなみに過去の状態は下記のコマンドで確認する事が出来ます。
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
94787a9ef78c centos:centos7 "/bin/bash" 2 minutes ago Exited (0) 2 seconds ago lonely_elion
a774bb68164f centos:centos7 "/bin/bash" 4 minutes ago Exited (127) 2 minutes ago agitated_curie
b0ba4f58d2ba centos:centos7 "/bin/bash" 6 minutes ago Exited (127) 5 minutes ago mad_bell
d388c7e43356 centos:centos7 "/bin/bash" 8 minutes ago Exited (0) 6 minutes ago elated_almeida
6bb8df691e1e centos:centos7 "cat /etc/centos-rel 11 minutes ago Exited (0) 11 minutes ago adoring_colden
de470953a827 centos:centos7 "/bin/bash" 14 minutes ago Exited (0) 13 minutes ago distracted_brattain
d618b9eb5e76 centos:centos7 "/bin/bash" 14 minutes ago Exited (0) 14 minutes ago sharp_brown
では、ファイルを作った状態でイメージをコミットしてみます。
流れとしては、
1. docker起動、接続
2. 空ファイル作成
3. dockerの更新履歴確認
4.直近のイメージをコミット
# docker run -it centos:centos7 /bin/bash
[root@d9c47c5696a3 /]# cd
[root@d9c47c5696a3 ~]# touch test
[root@d9c47c5696a3 ~]# ll
total 0
-rw-r--r-- 1 root root 0 Apr 28 23:56 test
[root@d9c47c5696a3 ~]# exit
exit
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9c47c5696a3 centos:centos7 "/bin/bash" 32 seconds ago Exited (0) 7 seconds ago mad_darwin
94787a9ef78c centos:centos7 "/bin/bash" 7 minutes ago Exited (0) 5 minutes ago lonely_elion
a774bb68164f centos:centos7 "/bin/bash" 9 minutes ago Exited (127) 7 minutes ago agitated_curie
b0ba4f58d2ba centos:centos7 "/bin/bash" 11 minutes ago Exited (127) 10 minutes ago mad_bell
d388c7e43356 centos:centos7 "/bin/bash" 13 minutes ago Exited (0) 11 minutes ago elated_almeida
6bb8df691e1e centos:centos7 "cat /etc/centos-rel 16 minutes ago Exited (0) 16 minutes ago adoring_colden
de470953a827 centos:centos7 "/bin/bash" 19 minutes ago Exited (0) 19 minutes ago distracted_brattain
d618b9eb5e76 centos:centos7 "/bin/bash" 20 minutes ago Exited (0) 19 minutes ago sharp_brown
なお、イメージ作成時のコメントはスペースを入れると怒られる。
# docker commit d9c47c5696a3 centos:file create
docker: "commit" requires a maximum of 2 arguments. See 'docker commit --help'.
# docker commit d9c47c5696a3 centos:file_create
37adc4bf5ce1792083190a3d370e5680f87d242b41e320b63471e828314e7355
正常に保存された。
では、コミットしたイメージに接続して、作成したファイルが存在するか確認。
# docker run -it centos:file_create /bin/bash
[root@dd64525332b7 /]# cd
[root@dd64525332b7 ~]# ll
total 0
-rw-r--r-- 1 root root 0 Apr 28 23:56 test
[root@dd64525332b7 ~]#
作成したファイルが存在する事が確認出来た。
dockerコンテナ、イメージの削除
dockerの基本概念として、ベースはそのままで差分のみを積み重ねて行くといったスタイルなのですが、不要になったコンテナやイメージは削除しておくにこしたことは無いと思います。(ちりもつもれば何とやら)
ですので、今回使用したコンテナ及びイメージの削除をします。
・更新イメージの削除
まず、削除対象となる更新イメージを確認します。
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd64525332b7 centos:file_create "/bin/bash" 29 minutes ago Exited (0) 9 seconds ago nostalgic_cori
そして、「IMAGE」列のイメージ名を指定して削除します。
# docker rmi -f centos:file_create
Untagged: centos:file_create
Deleted: 37adc4bf5ce1792083190a3d370e5680f87d242b41e320b63471e828314e7355
・イメージの削除
削除対象となるイメージを確認します。
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/centos 7 fd44297e2ddb 6 days ago 215.7 MB
docker.io/centos centos7 fd44297e2ddb 6 days ago 215.7 MB
docker.io/centos latest fd44297e2ddb 6 days ago 215.7 MB
そして、「IMAGE ID」を指定して削除
# docker rmi fd44297e2ddb
Untagged: docker.io/centos:7
Untagged: docker.io/centos:centos7
Untagged: docker.io/centos:latest
Deleted: fd44297e2ddb050ec4fa9752b7a4e3a8439061991886e2091e7c1f007c906d75
Deleted: 41459f052977938b824dd011e1f2bec2cb4d133dfc7e1aa0e90f7c5d337ca9c4
Deleted: 6941bfcbbfca7f4f48becd38f2639157042b5cf9ab8c080f1d8b6d047380ecfc
・コンテナの削除
コンテナの確認
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd64525332b7 centos:file_create "/bin/bash" 40 minutes ago Exited (0) 10 minutes ago nostalgic_cori
d9c47c5696a3 centos:centos7 "/bin/bash" 46 minutes ago Exited (0) 46 minutes ago mad_darwin
94787a9ef78c centos:centos7 "/bin/bash" 53 minutes ago Exited (0) 51 minutes ago lonely_elion
a774bb68164f centos:centos7 "/bin/bash" 55 minutes ago Exited (127) 53 minutes ago agitated_curie
b0ba4f58d2ba centos:centos7 "/bin/bash" 57 minutes ago Exited (127) 56 minutes ago mad_bell
d388c7e43356 centos:centos7 "/bin/bash" 59 minutes ago Exited (0) 57 minutes ago elated_almeida
6bb8df691e1e centos:centos7 "cat /etc/centos-rel About an hour ago Exited (0) About an hour ago adoring_colden
de470953a827 centos:centos7 "/bin/bash" About an hour ago Exited (0) About an hour ago distracted_brattain
d618b9eb5e76 centos:centos7 "/bin/bash" About an hour ago Exited (0) About an hour ago sharp_brown
コンテナの削除
(削除できない場合は”-f”オプションつける)
# docker rm `docker ps -a -q`
dd64525332b7
d9c47c5696a3
94787a9ef78c
a774bb68164f
b0ba4f58d2ba
d388c7e43356
6bb8df691e1e
de470953a827
d618b9eb5e76
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
綺麗さっぱり削除されました。
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
今回は作成したイメージへの接続、イメージの更新、イメージの削除について確認しました。
今後はdockerでwordpressを起動したり、といった具体的な構築を試して行きたいと思います。
以上、あいしんくいっとでした。
[…] 7の仮想化、Docker、リソース管理(後編)- シンクイット 流行りのDockerの使い方について触って覚える (CentOS7編)③ – あいしんく… Vagrant+Dockerをいじってみる – ぺーぺーSEのブログ CentOS7 で Docker […]