Dockerを導入する(CentOS版)
Dockerとは、Linux上で独立した別のLinuxシステムを起動することができる、コンテナ型の仮想化ソフトウェアの一つである。(IT用語辞典)
仮想サーバを簡単に立てることができるし、壊すことも自由にできるよーってことです。
では、実際に導入等々を説明していきます。
※ちなみに下記は一般ユーザでやってますので、sudoがめんどくさい人はrootでやればOKです。
Dockerを導入する
epelリポジトリからyumで一発導入
$ sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
$ sudo yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo yum -y install docker-io
yumからdocker-ioをインストールすればdockerがインストールされます。
そして、お約束のサービスをスタート
$ sudo service docker start
$ sudo chkconfig docker on
これでDockerがホスト側(インストールしたサーバ)でいつも起動している状態になります。次に子サーバ(Dockerでいう「コンテナ」)にOSをセットアップします。
Dockerの提供元が各Linuxのディストリビューションイメージを提供してくれていますので、そこから取ってきます。
$ sudo docker pull centos
うまくいけばこれでcentosが入ります。
現在どんなイメージがDockerにあるかは下記のコマンドで確認できます。
$ sudo docker images
これでひとまずDockerの一通りの準備ができました。
ちなみにDockerを使うときは結構コマンドが長くなるので、aliasを設定しておくと後々楽です。
例えば。。。
$ sudo echo "alias dl='docker ps -l -q'" >> ~/.bashrc
これでコンテナ名を取得するaliasができました。
コンテナを起動してみる
Dockerでは「子サーバ=コンテナ」と呼び、それを今から起動してみます。
$ docker run -i -t centos /bin/bash
コンテナの起動はdocker runで一発です。これはcentosというイメージを使って、bashを起動してくださいというコマンドです。
接続されると、
bash-4.2#
と表示されるはずです。
これはコンテナのbashになります。では、いろいろ確認してみましょう。
bash-4.2# uname -a
bash-4.2# cat /etc/redhat-release
bash-4.2# ping yahoo.co.jp
bash-4.2# exit
いろいろ確認できましたらexitしましょう。
exitするとコンテナは終了します。現在実行中のコンテナを確認する方法は
$ sudo docker ps
で確認することができます。
すでに終了した環境についても-aオプションをつけることで確認ができます。
仮想環境を終了させたくない時は、runしているときにCtrl+p, Ctrl+qで中断することができます。
そして、実行中の環境に再接続するときは
$ sudo docker attach コンテナID
をすることで再接続が可能です。
コンテナをカスタマイズしてみる
最初に使用したコンテナはほんとに初期のコンテナです。
それを自分の欲しい環境に設定したイメージを作ってみます。
まずはDockerでコンテナを作ってみます。
$ sudo docker run -i -t centos /bin/bash
これによりコンテナが起動します。
では、この初期コンテナに下記のコマンドを打ってみると、
bash-4.2# telnet
bash: telnet: command not found
と出ると思います。これは、初期コンテナにはtelnetがインストールされてないので、怒られています。
では、さくっとyumでtelnetを入れてみます。
bash-4.2# yum -y install telnet
これでtelnetコマンドが使えるようになりました。
では、一度bashを抜けます。
bash-4.2# exit
dockerでは起動したイメージが残っているので、それに先ほどのtelnetをいれたイメージに名前をつけていつでも呼び出せるようにします。
先ほどtelnetを入れたイメージのContainerIDを取得するために下記のコマンドを打ちます。
$ sudo docker ps -a
これで先ほど呼び出したContainerのIdを取得することができます。それに名前を付けて簡単に呼び出せるようにします。
$ sudo docker commit コンテナのID centos/telnet
ここでは「centos/telnet」と名前をつけましたが、基本的には名前の付け方は自由です。しかし、コンテナの名前は「自分の名前/なんとか」にすることが推奨されているみたいです。
では名前がきちんとついているか確認してみます。
$ sudo docker images
これで先ほど名前のつけたイメージができています。それを起動してtelnetが入っているか確認します。
$ sudo docker run -i -t centos/telnet /bin/bash
bash-4.2# telnet localhost 80
怒られることなくtelnetコマンドをたたくことができました。
これでtelnetが入ったcentosイメージを作成することができました。
まとめ
Dockerは簡単にインストールとコンテナを作成することができます。個人的にはVagrantよりも好きです。
Chefと組み合わせたら簡単にサーバが立てられますね。
次回はDockerfileの説明をしたいと思います。