Dockerを導入する(CentOS版)

  • 268
    いいね
  • 2
    コメント

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の説明をしたいと思います。