Help us understand the problem. What is going on with this article?

Dockerを導入する(CentOS版)

More than 3 years have passed since last update.

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away