page_adsence

ラベル Docker の投稿を表示しています。 すべての投稿を表示
ラベル Docker の投稿を表示しています。 すべての投稿を表示

2018年2月14日水曜日

Amazon Linux 2のイメージを使ってみる

背景

現在業務でAmazon Linuxを使っているのですが、Amazon Linux 2に移行したらどうなるのかなーと思ったのと、
個人的に会社の環境をコンテナ化していったらどうなるかなーというのを試してみたかったのがきっかけ。
そのためにまず Amazon Linux 2 のイメージを落としてみようと思いました。

とりあえず調べてみる

どうやらAmazon Linuxのイメージの取得方法は2種類あるらしい。
最近DockerHubから落とせるようになったって話題になっていたので、DockerHubから落とせるのは知っていたのですが、
AWS ECRからも落とせるみたいですね。

それぞれ、ダウンロードする為に必要なものは下記の通り。

  1. AWS ECR からDockerイメージをダウンロードする方法
    -> AWSのアカウントが必要

  2. DockerHubから取得する方法
    -> DockerHubのアカウントが必要

AWS ECRからダウンロードするのはAWSのアカウントが必要になるので、会社で試しにやってみたのですが、結構面倒でした。
DockerHubで落としてくる方が断然楽なので、こちらをオススメします。

やってみる

DockerHubのアカウントの発行に関しては、事前に済ませている前提で進めます。

  1. ターミナル上でDockerHubにログインする

    docker login
    

    ログイン時のユーザー名を入力する

    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: (DockerHubのユーザー名。メールアドレスではない。)
    

    ログイン時のパスワードを入力する

    Password: (DockerHubのログイン時に使用するパスワード)
    

    認証情報が合っていればログインに成功した旨が表示される

    Login Succeeded
    
  2. DockerHubからimageをpullしてくる

    docker pull amazonlinux
    
  3. Amazon Linux 2 のコンテナに入ってみる

    docker run -it amazonlinux /bin/bash
    
  4. OSの確認

    # cat /etc/os-release
    NAME="Amazon Linux AMI"
    VERSION="2017.09"
    ID="amzn"
    ID_LIKE="rhel fedora"
    VERSION_ID="2017.09"
    PRETTY_NAME="Amazon Linux AMI 2017.09"
    ANSI_COLOR="0;33"
    CPE_NAME="cpe:/o:amazon:linux:2017.09:ga"
    HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
    

以上でAmazon Linux 2のイメージをダウンロードしてくることが出来ました。
AWS ECRからダウンロードするのは面倒だけど、DockerHubから落としてくるのはめっちゃ楽でした。
あと、Amazon Linux 2って言っているけど、ec2-userがいるわけでもないし、普通にalpineのイメージと大差ない感じでした。
まぁベースイメージとしてはこんな感じなのかなぁという気がしないでもない。

2016年6月15日水曜日

docker-composeのextra_hosts

docker-composeのリファレンスを読んでいたら、extra_hostsなるオプションがあった。
自分が初めてDocker使った時にあったのかどうかは調べてないのですが、こんな便利なオプションを見逃していたなんて・・・。
dockerコンテナは基本的に起動時にIPを動的に割り当てているため、毎回コンテナ上のhostsファイルが書き換わってしまい、独自の設定を入れる方法がなかった。
力技でやる場合は、ENTRYPOINTとかのシェルスクリプト内でhosts書き換えたりする程度しか思いついていなかった。

早速使ってみた。
※ローカルにphpやmysqlという名前のイメージがある状態で行っています。
適当なディレクトリにdocker-compose.ymlを作って、下記の内容を記述します。
$ vi docker-compose.yml
mysql:
  image: mysql
  container_name: mysql
  hostname: mysqldb
  ports:
    - 3306:3306

php:
  image: php
  container_name: php
  hostname: php
  extra_hosts:
    - test1.com:111.111.111.111
    - test2.com:222.222.222.222
  links:
    - mysql
この状態で
$ docker-compose up -d
してから、コンテナ内に入る。
$ docker exec -it php bash
で、hostsファイルを確認する。
# view /etc/hosts
172.17.2.103    php
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.2.95       mysql mysqldb
172.17.2.95       mysql_1 mysqldb mysql
111.111.111.111   test1.com
222.222.222.222   test2.com
こんな感じで、記載される様になります。
便利!

※但し、大量のhostsを記載する場合はdocker-compose.ymlのファイル内が長くなってしまうので、
その辺はある程度長くなってしまったら力技の方がいいのかもしれないです。
extra_hostsもファイル指定出来ればいいんですけどね。

2016年4月2日土曜日

Dockerを利用してSeleniumのテスト環境を作る&WebDriverを使ってみる。

お手軽にSeleniumのテスト環境を作成する。

前提として
・CentOS7
・Docker1.8
・docker-compose1.5.2
・PHP
・composer
が導入済みの状態。

docker-compose.ymlには以下のように記載する。
selenium_chromeやselenium_firefoxで指定しているポート番号は任意で決めてもらってOK。
selenium_hub:
  image: docker.io/selenium/hub
  container_name: selenium-hub
  ports:
    - 4444:4444

selenium_chrome:
  image: docker.io/selenium/node-chrome-debug
  container_name: selenium-chrome
  ports:
    - 49154:5900
  links:
    - selenium_hub:hub

selenium_firefox:
  image: docker.io/selenium/node-firefox-debug
  container_name: selenium-firefox
  ports:
    - 49155:5900
  links:
    - selenium_hub:hub

コンテナを起動させる。
$ docker-compose up -d
こんな感じの状態になっていればOK
$ docker-compose ps
      Name                 Command           State            Ports
----------------------------------------------------------------------------
selenium-chrome      /opt/bin/entry_point.sh   Up      0.0.0.0:49154->5900/tcp
selenium-firefox       /opt/bin/entry_point.sh   Up      0.0.0.0:49155->5900/tcp
selenium-hub            /opt/bin/entry_point.sh   Up      0.0.0.0:4444->4444/tcp

で、composer.jsonは下記の様に記載して保存。
$ vi composer.json
{
    "require": {
        "phpunit/phpunit": "5.1.*",
        "phpunit/phpunit-selenium": "dev-master",
        "facebook/webdriver":"dev-master"
    }
}
composerコマンドで、上記のパッケージをインストールする。
$ composer install
とりあえずFirefoxを立ち上げて、自分のブログのページを表示させてみるスクリプトを書く。
$ vi test.php
<?php
require_once 'vendor/autoload.php';

$host   = 'http://VMのIP:4444/wd/hub';
$driver = RemoteWebDriver::create($host, DesiredCapabilities::firefox());
$driver->get('http://gyagya1111.blogspot.jp/');
で、実行する。
$ php test.php
VNCクライアントとかを使って、VMのIP:49155にアクセスすると、動いているのが見える。

2016年2月26日金曜日

Dockerfile作成時のTIPS

基本的にはコンテナの中で一通り作業をして、それをDockerfileに記述するというスタイルで作っているのですが、
一発でDockerfileが完成することなんて無いので、なるべく効率よく作れるように下記の事を心掛けています。

1.ステップは細かく分ける。

 最終的なDockerfileはステップ数をなるべく減らす必要があるが、
 Dockerfileを作成している時にはなるべく作業単位を細かくした方が効率がいい。
 例えば、インストールに時間の掛かる処理の後ろで、処理の軽い内容をやるとする。
 長い時間掛けてインストールが終わったのに、処理の軽い方で失敗した時には、
 インストールに掛かった時間がまるごと無駄になってしまう。
 時間の掛かる処理ほど細かく分けた方が、Dockerfileを書く時には効率よく書ける。

2.キャッシュをうまく使う。

 例えばDockerfileの最初でyumなりaptなりでインストール作業を行っていたとして、
 途中別の何かをインストールする際に、追加で入れないといけないミドルウェアが出てきた場合、
 最初にインストールしているところに追記するのではなく、必要になる処理の直前で追加してやる。
 こうすることにより、途中まで作成されたキャッシュイメージを無駄にせずに済む。

2016年2月20日土曜日

dockerのコンテナからホストマシンへの通信

dockerコンテナ上からホストマシンにcurlとか投げれるかなと思って調べてみた。
ホストマシン上で、ifconfigコマンドを叩く。
$ ifconfig
docker0   Link encap:Ethernet  HWaddr 16:60:95:11:A4:9C
          inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::3807:43ff:fe23:6f0a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:834595 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2501 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:26940488 (25.6 MiB)  TX bytes:647482 (632.3 KiB)
このdocker0の部分がdockerコンテナ上から見えるホストマシンのIPでした。
curlコマンドも普通に通りました。

2015年12月28日月曜日

Dockerを使って開発環境を整えてみた

今まで自分の開発環境はWindows7 + Cygwin + Vagrant + Ansible + VirtualBoxで作っていたのですが、
マシンスペックの都合上、複数台のVMを動かすのが厳しくなってきたので、Dockerを使って開発環境を構築してみようと思います。
また、DockerHubからイメージを落としてくるのではなく、自分で1からDockerfileを作っていこうと思います。
とりあえず1コンテナにつき1つのミドルウェアのみインストールするようにしました。
また、ベースOSはすべてCentOS6.7にしました。

今回構築したい環境は下記のような感じです。
・ミドルウェア
  - Nginx 1.8.0(LB) × 1台
  - Nginx 1.8.0 × 2台
  - PHP 5.6系
  - MySQL 5.5系
  - HAProxy 1.5系
  - Redis 3.0.5 × 3台(master 1台、slave 2台)
  - Redis-Sentinel × 3台

・構成図


まず、それぞれのDockerfileから作成していきます。
Dockerfileの作成手順としては、下記の様な感じで作っていきました。

1.ベースイメージを取得
$ docker pull centos:6.7
2.ベースのイメージからコンテナを作成してコンテナ内部に入る
$ docker run -it centos:6.7 bash
3.コンテナ内部で、Dockerfileに書きたい内容を一通り試す

4.コンテナから出る
# exit
5.Dockerfileに書く

6.buildしてみる
docker build -t [IMAGE_NAME] PATH
7.成功したらデーモンモードで起動させる。
docker run -d [IMAGE]
8.失敗した場合はログを確認する
docker logs [CONTAINER]


上記の手順で作成したDockerfileは下記にあげてあります。
但し、解説用に編集したDockerfileなので、そのままの状態では使用出来ないので予めご了承下さい。

https://github.com/gyagya/Dockerfiles


続いては、このDockerfileを使って、イメージを作成していきます。
docker build -t image_name Dockerfile

作成したイメージの一覧を確認します。
$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
php                  latest              ab774aab6741        2 days ago          477.8 MB
nginx                latest              3cb45e85b756        4 days ago          474.2 MB
nginx-lb             latest              c0e293e58e56        5 days ago          474.1 MB
mysql-data-storage   latest              85e7b48d7503        5 days ago          190.6 MB
mysql                latest              528877b6d10d        5 days ago          781.2 MB
haproxy              latest              8171746ff33b        5 days ago          473.9 MB
redis-sentinel       latest              d90eb8fa284b        5 days ago          503.4 MB
redis-slave          latest              7b0ca34ff4b7        5 days ago          503.4 MB
redis-data-storage   latest              518bace5a446        5 days ago          190.6 MB
redis                latest              23c44601fccd        5 days ago          503.4 MB
file-storage         latest              ab96aa28dc9e        5 days ago          190.6 MB
centos               centos6.7           3fba1048142f        8 weeks ago         190.6 MB

ここまで揃った段階で、docker-composeを使用してまとめてコンテナを起動させます。
docker-composeのインストール方法は下記の通りです。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.4.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
インストールが完了したらdocker-compose.ymlがあるディレクトリか、その配下のディレクトリで
$ docker-compose up -d
で起動ができます。
起動しているかどうかを確認する。
$ docker-compose ps
ここまで完了すれば環境構築は完了です。

■Dockerfileを作成するにあたっての注意点が幾つか。
1.Dockerは何かしらがフォアグラウンドで起動していないと、コンテナを起動させてもすぐに終了してしまいます。
2.資源の節約という意味で、Dockerfileはなるべく容量を少なくする必要が有ります。
下記2つのイメージは同じ内容のコンテナで、Dockerfileの書き方を変えただけのものになります。
$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
mysql-mroonga2         latest              697b08894cce        29 seconds ago      781.2 MB
mysql-mroonga          latest              945337cb1dc4        12 hours ago        1.242 GB
何が違うのかというと、容量が少ない方でやった内容はRUNの回数を減らす。yum install後はyum clean allするなどです。
DockerはRUN単位でファイルシステムの更新が走るので、ゴミファイルがあるとその分無駄に差分が発生してしまい、容量の肥大化につながります。

■データの永続化とポータビリティについて
Dockerでデータの永続化をしたコンテナ(MySQLのデータコンテナ等)をexport/saveコマンドとかで持ち運びたいと思ったのですが、これは全く持って出来ません。
永続化(コンテナが停止状態でもファイルはいじれる)は出来ます。
コンテナのexportするとコンテナ自体は移動出来ます。
但し、中身のデータは一切移動出来ません。
おそらく将来的にも出来る様になることはないと思います。
Dockerはあくまで環境のポータビリティを上げるだけで、データのポータビリティを上げるためのツールではないからっていうことなのかもしれません。

■ファイルのマウントに関して 現状使用しているdocker1.7系では、ファイルのマウントはホスト側からコンテナ側にマウントすることしか出来ません。
今回作った環境をDockerをあまり知らない人でも使えるように、コンテナに入らずにログファイルや設定ファイルをいじれる様にしていました。
しかし、ホスト側からコンテナ側にマウントすることしか出来ず、ホスト側で空のディレクトリを用意しておき、設定ファイルが置いてあるディレクトリをマウントしてしまうと、
当然コンテナ側の設定ファイルが消えるので起動しないといった事が有りました。
仕方ないので、コンテナ側と同じファイルをホストマシン上に置いて対応しましたが、設定ファイルを2重管理しないといけないので非常に面倒くさいです。
これはなんとかしたいのですが、今のところ上記の方法でしか解決出来ていません。

2015年11月24日火曜日

CentOS6系とCentOS7にDockerをインストール

CentOS6系と、CentOS7系にそれぞれDockerをインストールしてみました。
現時点でDockerの最新バージョンは1.8系ですが、CentOS6系だと、Docker1.7系までしか使えませんので、
最新版のDockerを使いたい場合は、自動的にCentOS7系を使うことになります。

CentOS6.7にDockerをインストール

まず、面倒な方から。
CentOS6系でDockerをインストールするためには、EPELのリポジトリを追加して、そこからインストールする必要があります。
但し、追加したEPELリポジトリ内にある、dockerというのは全くの別物なので要注意。
早速、EPELのリポジトリを追加します。
sudo rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm

インストールしたくない方のdockerの情報を確認。
$ yum info docker
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink                                                                      | 5.5 kB     00:00
 * base: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.yz.yamagata-u.ac.jp
 * updates: ftp.yz.yamagata-u.ac.jp
epel                                                                               | 4.3 kB     00:00
epel/primary_db                                                                    | 5.7 MB     00:03
利用可能なパッケージ
名前                : docker
アーキテクチャ      : x86_64
バージョン          : 1.5
リリース            : 5.el6
容量                : 19 k
リポジトリー        : epel
要約                : KDE and GNOME2 system tray replacement docking application
URL                 : http://icculus.org/openbox/2/docker/ ← URLが全然別物。要約も全く別物
ライセンス          : GPL+
説明                : Docker is a docking application (WindowMaker dock app) which acts as a system
                    : tray for KDE and GNOME2. It can be used to replace the panel in either
                    : environment, allowing you to have a system tray without running the KDE/GNOME
                    : panel or environment.

CentOS6.7の場合だとdocker-ioというのが、インストールしたいDockerになります。

 yum info docker-io
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.yz.yamagata-u.ac.jp
 * updates: ftp.yz.yamagata-u.ac.jp
利用可能なパッケージ
名前                : docker-io
アーキテクチャ      : x86_64
バージョン          : 1.7.1
リリース            : 2.el6
容量                : 4.6 M
リポジトリー        : epel
要約                : Automates deployment of containerized applications
URL                 : http://www.docker.com ← Docker公式サイトのURLになっている
ライセンス          : ASL 2.0
説明                : Docker is an open-source engine that automates the deployment of any
                    : application as a lightweight, portable, self-sufficient container that will
                    : run virtually anywhere.
                    :
                    : Docker containers can encapsulate any payload, and will run consistently on
                    : and between virtually any server. The same container that a developer builds
                    : and tests on a laptop will run at scale, in production*, on VMs, bare-metal
                    : servers, OpenStack clusters, public instances, or combinations of the above.

docker-ioが正しい事を確認したので、yumでインストールする。
$ sudo yum install docker-io
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Determining fastest mirrors
epel/metalink                                                                      | 5.5 kB     00:00
 * base: www.ftp.ne.jp
 * epel: ftp.kddilabs.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
base                                                                               | 3.7 kB     00:00
base/primary_db                                                                    | 4.6 MB     00:03
epel                                                                               | 4.3 kB     00:00
epel/primary_db                                                                    | 5.7 MB     00:03
extras                                                                             | 3.4 kB     00:00
extras/primary_db                                                                  |  33 kB     00:00
updates                                                                            | 3.4 kB     00:00
updates/primary_db                                                                 | 2.6 MB     00:01
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package docker-io.x86_64 0:1.7.1-2.el6 will be インストール
--> 依存性の処理をしています: xz のパッケージ: docker-io-1.7.1-2.el6.x86_64
--> 依存性の処理をしています: lxc のパッケージ: docker-io-1.7.1-2.el6.x86_64
--> 依存性の処理をしています: libcgroup のパッケージ: docker-io-1.7.1-2.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package libcgroup.x86_64 0:0.40.rc1-16.el6 will be インストール
---> Package lxc.x86_64 0:1.0.7-4.el6 will be インストール
--> 依存性の処理をしています: lua-lxc(x86-64) = 1.0.7-4.el6 のパッケージ: lxc-1.0.7-4.el6.x86_64
--> 依存性の処理をしています: lua-alt-getopt のパッケージ: lxc-1.0.7-4.el6.x86_64
--> 依存性の処理をしています: liblxc.so.1()(64bit) のパッケージ: lxc-1.0.7-4.el6.x86_64
---> Package xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package lua-alt-getopt.noarch 0:0.7.0-1.el6 will be インストール
---> Package lua-lxc.x86_64 0:1.0.7-4.el6 will be インストール
--> 依存性の処理をしています: lua-filesystem のパッケージ: lua-lxc-1.0.7-4.el6.x86_64
---> Package lxc-libs.x86_64 0:1.0.7-4.el6 will be インストール
--> 依存性の処理をしています: rsync のパッケージ: lxc-libs-1.0.7-4.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package lua-filesystem.x86_64 0:1.4.2-1.el6 will be インストール
---> Package rsync.x86_64 0:3.0.6-12.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

==========================================================================================================
 パッケージ              アーキテクチャ  バージョン                                   リポジトリー   容量
==========================================================================================================
インストールしています:
 docker-io               x86_64          1.7.1-2.el6                                  epel          4.6 M
依存性関連でのインストールをします。:
 libcgroup               x86_64          0.40.rc1-16.el6                              base          129 k
 lua-alt-getopt          noarch          0.7.0-1.el6                                  epel          6.9 k
 lua-filesystem          x86_64          1.4.2-1.el6                                  epel           24 k
 lua-lxc                 x86_64          1.0.7-4.el6                                  epel           15 k
 lxc                     x86_64          1.0.7-4.el6                                  epel          120 k
 lxc-libs                x86_64          1.0.7-4.el6                                  epel          252 k
 rsync                   x86_64          3.0.6-12.el6                                 base          335 k
 xz                      x86_64          4.999.9-0.5.beta.20091007git.el6             base          137 k

トランザクションの要約
==========================================================================================================
インストール         9 パッケージ

総ダウンロード容量: 5.6 M
インストール済み容量: 22 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
(1/9): docker-io-1.7.1-2.el6.x86_64.rpm                                            | 4.6 MB     00:03
(2/9): libcgroup-0.40.rc1-16.el6.x86_64.rpm                                        | 129 kB     00:00
(3/9): lua-alt-getopt-0.7.0-1.el6.noarch.rpm                                       | 6.9 kB     00:00
(4/9): lua-filesystem-1.4.2-1.el6.x86_64.rpm                                       |  24 kB     00:00
(5/9): lua-lxc-1.0.7-4.el6.x86_64.rpm                                              |  15 kB     00:00
(6/9): lxc-1.0.7-4.el6.x86_64.rpm                                                  | 120 kB     00:00
(7/9): lxc-libs-1.0.7-4.el6.x86_64.rpm                                             | 252 kB     00:00
(8/9): rsync-3.0.6-12.el6.x86_64.rpm                                               | 335 kB     00:00
(9/9): xz-4.999.9-0.5.beta.20091007git.el6.x86_64.rpm                              | 137 kB     00:00
----------------------------------------------------------------------------------------------------------
合計                                                                      1.2 MB/s | 5.6 MB     00:04
警告: rpmts_HdrFromFdno: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Importing GPG key 0x0608B895:
 Userid : EPEL (6) 
 Package: epel-release-6-8.noarch (installed)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
これでいいですか? [y/N]y
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) 
 Package: centos-release-6-7.el6.centos.12.3.x86_64 (@anaconda-CentOS-201508042137.x86_64/6.7)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
これでいいですか? [y/N]y
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
警告: RPMDB は yum 以外で変更されました。
  インストールしています  : lua-filesystem-1.4.2-1.el6.x86_64                                         1/9
  インストールしています  : libcgroup-0.40.rc1-16.el6.x86_64                                          2/9
  インストールしています  : lua-alt-getopt-0.7.0-1.el6.noarch                                         3/9
  インストールしています  : xz-4.999.9-0.5.beta.20091007git.el6.x86_64                                4/9
  インストールしています  : rsync-3.0.6-12.el6.x86_64                                                 5/9
  インストールしています  : lxc-libs-1.0.7-4.el6.x86_64                                               6/9
  インストールしています  : lua-lxc-1.0.7-4.el6.x86_64                                                7/9
  インストールしています  : lxc-1.0.7-4.el6.x86_64                                                    8/9
  インストールしています  : docker-io-1.7.1-2.el6.x86_64                                              9/9
  Verifying               : lua-lxc-1.0.7-4.el6.x86_64                                                1/9
  Verifying               : rsync-3.0.6-12.el6.x86_64                                                 2/9
  Verifying               : lxc-1.0.7-4.el6.x86_64                                                    3/9
  Verifying               : xz-4.999.9-0.5.beta.20091007git.el6.x86_64                                4/9
  Verifying               : docker-io-1.7.1-2.el6.x86_64                                              5/9
  Verifying               : lxc-libs-1.0.7-4.el6.x86_64                                               6/9
  Verifying               : lua-alt-getopt-0.7.0-1.el6.noarch                                         7/9
  Verifying               : libcgroup-0.40.rc1-16.el6.x86_64                                          8/9
  Verifying               : lua-filesystem-1.4.2-1.el6.x86_64                                         9/9

インストール:
  docker-io.x86_64 0:1.7.1-2.el6

依存性関連をインストールしました:
  libcgroup.x86_64 0:0.40.rc1-16.el6              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-4.el6
  lxc.x86_64 0:1.0.7-4.el6                        lxc-libs.x86_64 0:1.0.7-4.el6
  rsync.x86_64 0:3.0.6-12.el6                     xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6

完了しました!

以上でインストール自体は終了。
後はDockerをchkconfigの設定と起動をするのですが、dockerはインストール状態だとrootユーザーでないと利用出来ないので、dockerグループに現状のユーザーを追加します。
$ sudo chkconfig docker on
$ sudo service docker start
試しに一般ユーザーでdockerコマンドを叩いてみると下記の様なエラーが出る。
$ docker ps
Get http:///var/run/docker.sock/v1.19/containers/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
sudoを使えば問題ない。
$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

毎回sudo使うのは嫌なので、docker用のグループに現在のユーザーを追加する。
$ sudo groupadd docker
$ sudo gpasswd -a $USER docker
$ sudo service docker restart
で、一回ターミナルから抜けて、再ログインする。
以上でCentOS6系へのインストール関連の作業は完了。



CentOS7にDockerをインストール

CentOS7へのDockerのインストールは非常に簡単でした。
CentOS6系と違い、特にリポジトリを追加することなく、インストールが可能です。

念のため確認します。
$ yum info docker
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
利用可能なパッケージ
名前                : docker
アーキテクチャー    : x86_64
バージョン          : 1.8.2
リリース            : 7.el7.centos
容量                : 8.7 M
リポジトリー        : extras/7/x86_64
要約                : Automates deployment of containerized applications
URL                 : https://github.com/docker/docker ← ちゃんとdockerのURLになっている
ライセンス          : ASL 2.0
説明                : Docker is an open-source engine that automates the deployment of any
                    : application as a lightweight, portable, self-sufficient container that will
                    : run virtually anywhere.
                    :
                    : Docker containers can encapsulate any payload, and will run consistently on
                    : and between virtually any server. The same container that a developer builds
                    : and tests on a laptop will run at scale, in production*, on VMs, bare-metal
                    : servers, OpenStack clusters, public instances, or combinations of the above.

dockerをインストールして、サービス起動する。
$ sudo yum install docker
$ sudo systemctl start docker
また、先ほどと同様にdockerグループを追加して、現在のユーザーをdockerグループに追加し、再ログインする。
$ sudo groupadd docker
$ sudo gpasswd -a $USER docker
$ sudo systemctl restart docker

以上でCentOS7へのインストールも完了です。
どちらのバージョンでもインストールの手間は大したことないので、どちらを選んでも問題ないと思います。
しかし、Dockerの開発スピードはかなり早いので、なるべく最新版を使った方がいいのかもしれません。