明日、勉強会ということもあり、
仮想環境があれば遊べるかなと思ってDockerを入れてみました。
使ったのは、ConoHaのVPSでデフォルトのテンプレートで入る
CentOS6です。
ConoHaは、EPELリポジトリが最初から入っているので、
コマンド一発ですが、ほかだとEPELリポジトリを追加してください。
ざっくりとイメージとコンテナを作って削除してみたりして
遊んでみました。
さてインストールしてみましょう。
# yum install docker-io Installed: docker-io.x86_64 0:1.4.1-3.el6 Dependency Installed: lua-alt-getopt.noarch 0:0.7.0-1.el6 lua-filesystem.x86_64 0:1.4.2-1.el6 lua-lxc.x86_64 0:1.0.7-1.el6 lxc.x86_64 0:1.0.7-1.el6 lxc-libs.x86_64 0:1.0.7-1.el6 Complete!
yumで入るのは有難いですw
サービスとして起動しましょう
# service docker start Starting cgconfig service: [ OK ] Starting docker: [ OK ] # chkconfig |grep docker docker 0:off 1:off 2:on 3:on 4:on 5:on 6:off
自動起動するようになってますね。
さていろいろと見てみましょう。
# docker info Containers: 0 Images: 0 Storage Driver: devicemapper Pool Name: docker-253:0-783837-pool Pool Blocksize: 65.54 kB Data file: /var/lib/docker/devicemapper/devicemapper/data Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata Data Space Used: 305.7 MB Data Space Total: 107.4 GB Metadata Space Used: 729.1 kB Metadata Space Total: 2.147 GB Library Version: 1.02.89-RHEL6 (2014-09-01) Execution Driver: native-0.2 Kernel Version: 2.6.32-504.12.2.el6.x86_64 Operating System: <unknown> CPUs: 2 Total Memory: 996.3 MiB Name: HOGEHOGE ID: HOGE:HOGE:HOEG:HOGE
こんな感じです。
さてcentosのイメージを持ってきましょう。
https://registry.hub.docker.com/
ここにいろんなイメージがあります。
今回はCentOSを使ってみます。
「docker pull centos」とするとCentOS7が入るので、
明示的にタグ「6」を指定しました。
# docker pull centos:6 centos:6: The image you are pulling has been verified 511136ea3c5a: Pull complete 5b12ef8fd570: Pull complete f6808a3e4d9e: Pull complete Status: Downloaded newer image for centos:6 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos 6 f6808a3e4d9e 3 weeks ago 215.7 MB # docker run -i -t centos:6 /bin/bash [root@9e3776094f1b /]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@9e3776094f1b /]#
「Ctrl+p」「Ctrl+q」で一旦抜けることが出来ます。
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3bcb5bc60080 centos:6 "/bin/bash" 8 seconds ago Up 7 seconds angry_poincare
動いています。
再度、アタッチしてあげる。
# docker attach 3bcb5bc60080(CONTAINER ID) [root@3bcb5bc60080 /]# exit
今度は「exit」する。
プロセスを見ると
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
停止していると見えないので
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3bcb5bc60080 centos:6 "/bin/bash" 16 seconds ago Exited (0) 5 seconds ago elated_davinci
「-a」オプションをつけてやります。
そうすると、見えます。
これをコンテナを削除するには、
# docker rm 3bcb5bc60080(CONTAINER ID) 3bcb5bc60080 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
無くなりました。
さて、自分だけのイメージを作ってみよう。
ということで「openssh-server」を入れたイメージを作ってみる。
# docker run -i -t centos:6 /bin/bash [root@1e1a190108e2 /]# yum update [root@1e1a190108e2 /]# yum install openssh-server [root@1e1a190108e2 /]# sshd -v sshd: illegal option -- v OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file] [-f config_file] [-g login_grace_time] [-h host_key_file] [-k key_gen_time] [-o option] [-p port] [-u len] [root@1e1a190108e2 /]# exit
一旦コンテナから抜けます。
ホスト側で
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1e1a190108e2 centos:6 "/bin/bash" 4 minutes ago Exited (130) 1 seconds ago furious_nobel # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos 6 f6808a3e4d9e 3 weeks ago 215.7 MB
イメージはまだ一つしかないです。
作るのは、
リポジトリ=centos/sshd
タグ=6
にしてみます。
# docker commit 1e1a190108e2(CONTAINER ID) centos/sshd:6 0fca379570728ab2ddfd19fbac754c6c06a4501c4633d88167535b5787c4226c # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos/sshd 6 0fca37957072 32 seconds ago 271.8 MB centos 6 f6808a3e4d9e 3 weeks ago 215.7 MB
出来ました!!
作ったイメージからコンテナを作成
# docker run -i -t centos/sshd /bin/bash [root@b83fde6ff96d /]# sshd -v sshd: illegal option -- v OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file] [-f config_file] [-g login_grace_time] [-h host_key_file] [-k key_gen_time] [-o option] [-p port] [-u len] [root@b83fde6ff96d /]# exit # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b83fde6ff96d centos/sshd:6 "/bin/bash" 41 seconds ago Exited (130) 4 seconds ago nostalgic_pike 1e1a190108e2 centos:6 "/bin/bash" 13 minutes ago Exited (130) 8 minutes ago furious_nobel
出来てます!!
作ったイメージを削除してみる。
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos/sshd 6 0fca37957072 3 minutes ago 271.8 MB centos 6 f6808a3e4d9e 3 weeks ago 215.7 MB
さっき作ったイメージ「centos/sshd」を消してみる
# docker rmi centos/sshd Error response from daemon: Conflict, cannot delete 0fca37957072 because the container b83fde6ff96d is using it, use -f to force FATA[0000] Error: failed to remove one or more images
はい、怒られました。
コンテナは停止してますが、CONTAINER ID「b83fde6ff96d」が
「centos/sshd」を使っているので、
まずは、コンテナID「b83fde6ff96d」を削除する必要があります。
# docker rm b83fde6ff96d(CONTAINER ID) b83fde6ff96d # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1e1a190108e2 centos:6 "/bin/bash" 27 minutes ago Exited (130) 23 minutes ago furious_nobel # docker rmi centos/sshd Untagged: centos/sshd:latest Deleted: 0fca379570728ab2ddfd19fbac754c6c06a4501c4633d88167535b5787c4226c # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos 6 f6808a3e4d9e 3 weeks ago 215.7 MB
先ほど作ったイメージが消えました。
ざっくりですが、こうやっていろいろと遊んでみたいと思います。