CentOS6.5でDockerを少しだけ使ってみた
試してみたいなと思いつつ手をつけられていなかったDockerを少しだけ触ってみたので、ログを残しておきたいと思います。
DockerはDocker inc.社がオープンソースで公開しているコンテナ型の仮想化ソフトウェアですが、以下の記事などを見たらイメージがしやすかったです。
- コンテナ型仮想化「Docker 0.7」リリース。主要Linuxディストリビューション全対応、ストレージドライバ同梱、コンテナ命名も可能に - Publickey
- Linuxコンテナを手軽に扱えるDockerを使ってみよう | KVH Blog
- http://www.infoq.com/jp/articles/docker-containers
- http:// http://ja.wikipedia.org/wiki/LXC
- http://ja.wikipedia.org/wiki/Cgroups
リポジトリの追加
Cent OSでDockerをインストールするためにEPELのリポジトリを追加します。
[root@centos.okochang.com ~]# rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6 [root@centos.okochang.com ~]# yum install -y http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Dockerのインストールと起動
リポジトリの追加が出来たら以下のようにインストールが出来ます。
[root@centos.okochang.com ~]# yum install docker-io [root@centos.okochang.com ~]# docker -v Docker version 0.7.2, build 28b162e/0.7.2 [root@centos.okochang.com ~]# service docker start [root@centos.okochang.com ~]# chkconfig docker on
動作確認
起動直後はもちろん特にコンテナやイメージは存在しません。
[root@centos.okochang.com ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@centos.okochang.com ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
新しいコンテナを作成してでbashを使ってみます。
[root@centos.okochang.com ~]# docker run -t -i centos /bin/bash bash-4.1# echo "Hello World" Hello World bash-4.1# yum install tree # tree /home/ /home/ 0 directories, 0 files bash-4.1# exit exit
再度同じコマンドでコンテナにアクセスした場合の動作を確認します。
[root@centos.okochang.com ~]# docker run -t -i centos /bin/bash bash-4.1# tree bash: tree: command not found bash-4.1# exit exit
先ほどのリンクの記事にあるように、同じコマンドでアクセスしていても新しいコンテナにアクセスするようです。
以下のコマンドでコンテナの一覧が確認出来ます。
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3625e3064dc3 centos:6.4 /bin/bash 28 seconds ago Exit 127 suspicious_brown 267c7bb6fa21 centos:6.4 /bin/bash 2 minutes ago Exit 0 boring_euclide
コンテナを再利用したい場合は、リポジトリにコミットしたうえで新しくコンテナを作成するようです。
コミットをする場合はコンテナIDを指定して以下のように実行します。
[root@centos.okochang.com ~]# docker commit 267c7bb6fa21 okochang/centos c1896ddfe6e49977edbdd60d18c0c404a66be6ed6bba0257e1a038b57109578c
コミットされるとその状態がイメージとして保存されます。
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE okochang/centos latest c1896ddfe6e4 32 seconds ago 337.1 MB centos 6.4 539c0211cd76 9 months ago 300.6 MB centos latest 539c0211cd76 9 months ago 300.6 MB
以下のようにコンテナを再利用します。
[root@centos.okochang.com ~]# docker run -t -i okochang/centos /bin/bash bash-4.1# tree /home/ /home/ 0 directories, 0 files # exit exit
コンテナの削除を行う場合はrmコマンドにコンテナIDを指定します。
[root@centos.okochang.com ~]# docker rm 03e8a848d495 03e8a848d495
イメージの削除をする場合はrmiコマンドにイメージIDを指定します。
※イメージを使用しているコンテナが削除されている必要があります。
[root@centos.okochang.com ~]# docker rmi c1896ddfe6e4 Untagged: c1896ddfe6e49977edbdd60d18c0c404a66be6ed6bba0257e1a038b57109578c Deleted: c1896ddfe6e49977edbdd60d18c0c404a66be6ed6bba0257e1a038b57109578c
Dockerfileというテキストファイルを作成して自分用にカスタマイズしたイメージを作成することも出来ます。
書き方はこちらに記載されていますが、そんなに難しいものではないですね。
Dockerfileを作成したらテキストファイルがあるディレクトリでビルドすればOKです。
[root@centos.okochang.com ~]# cat Dockerfile FROM centos RUN yum install -y openssh openssh-client openssh-server emacs tree EXPOSE 22 [root@centos.okochang.com ~]# docker build -t okochang/base [root@centos.okochang.com ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE okochang/base latest 040477d29dd1 2 minutes ago 536.5 MB centos 6.4 539c0211cd76 9 months ago 300.6 MB centos latest 539c0211cd76 9 months ago 300.6 MB