CentOS 6.6でDocker

CentOS 6で、Dockerを使いたいという人が多くて、少し調べてみました。

#サポートについて
CentOS 6上、Dockerを使用する場合、DockerにしてもRedHatにしても正式にサポートしていないので注意する必要があります。

* DockerではCentOS6は正式にサポートしていない

昔は、CentOS6の記載があったのですが、なくなっています。
https://docs.docker.com/installation/centos/

>Docker is supported on the following versions of CentOS:
>
>    CentOS 7.X
>
>Installation on other binary compatible EL7 distributions such as Scientific Linux might succeed, but Docker does not test or support Docker on these distributions.


* [Does RHEL 6 provide LXC tools needed to use Linux Containers?](https://access.redhat.com/solutions/56261)

>Red Hat Enterprise Linux 6 introduced Linux Container support as a technical preview. 

* [Redhat: Linux コンテナーについて](https://access.redhat.com/ja/articles/1459113)

# さらに注意事項

まずは中井さんのページを見てください。
　[第43回　「Dockerイメージ」のポータビリティとLinuxカーネルのABI (中井悦司) ](http://www.school.ctc-g.co.jp/columns/nakai/nakai43.html)

Linuxのコンテナが異なるバージョンで動く理由は、LinuxのABI(Application Binary Interface)のおかげのようです。厳格にABIの変更が禁止されているので、新しいカーネルの開発は古いカーネルを継承して作られているため、古いカーネルのシステムコールは動作するようになっているということです。

逆に考えれば、古いカーネル上で新しいカーネルも動くかもしれませんが、新しい機能の部分はうまく動作しないということになります。

つまり、CentOS 6を使用する限りは、動作する可能性があるのは同バージョンか、あるいは下位のバージョンということになります。

# インストール

## epelのインストール

詳細は、[EPEL](https://fedoraproject.org/wiki/EPEL)を見てください。

```
rpm -ihv https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm                                              
https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.OdeNN6: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
準備中...                ########################################### [100%]
   1:epel-release           ########################################### [100%]
```

epelには、dockerとdocker-ioの2種類がありますが、以下の違いがあります。

```
# repoquery --list docker
/usr/bin/docker
/usr/share/doc/docker-1.5
/usr/share/doc/docker-1.5/COPYING
/usr/share/doc/docker-1.5/README

# repoquery --list docker-io
/etc/docker
/etc/rc.d/init.d/docker
/etc/sysconfig/docker
/etc/sysconfig/docker-network
/etc/sysconfig/docker-storage
/etc/udev/rules.d/80-docker.rules
/usr/bin/docker
/usr/libexec/docker
/usr/libexec/docker/dockerinit
...(略)
```

## インストール
docker-ioをインストールします。

```
# yum install docker-io 
...
依存性を解決しました

===============================================================================================================================================
 パッケージ                       アーキテクチャ           バージョン                                          リポジトリー               容量
===============================================================================================================================================
インストールしています:
 docker-io                        x86_64                   1.5.0-1.el6                                         epel                      4.7 M
依存性関連でのインストールをします。:
 libcgroup                        x86_64                   0.40.rc1-15.el6_6                                   updates                   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-1.el6                                         epel                       15 k
 lxc                              x86_64                   1.0.7-1.el6                                         epel                      120 k
 lxc-libs                         x86_64                   1.0.7-1.el6                                         epel                      249 k
 xz                               x86_64                   4.999.9-0.5.beta.20091007git.el6                    base                      137 k
...
依存性関連をインストールしました:
  libcgroup.x86_64 0:0.40.rc1-15.el6_6                 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-1.el6                         lxc.x86_64 0:1.0.7-1.el6                    lxc-libs.x86_64 0:1.0.7-1.el6              
  xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6        

完了しました!
```

## 起動
それでは起動させましょう。停止状態になっているので、起動させましょう。

```
# chkconfig --list docker
docker          0:off   1:off   2:on    3:on    4:on    5:on    6:off

# service docker status
docker は停止しています

# service docker start
Starting cgconfig service:                                 [  OK  ]
Starting docker:                                           [  OK  ]
```

# コンテナ起動

コンテナ起動します。もちろん、コマンドは同じです。

```
# docker run -it --name test01 centos:6 /bin/bash
Unable to find image 'centos:6' locally
Pulling repository centos
a005304e4e74: Download complete
f1b10cd84249: Download complete
fb9cc58bde0c: Download complete
Status: Downloaded newer image for centos:6  
```

## 確認

同じですね。

```
# lsblk 
NAME                                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                                 7:0    0  100G  0 loop 
└─docker-253:0-264044-pool (dm-2)   253:2    0  100G  0 dm   
  ├─docker-253:0-264044-base (dm-3) 253:3    0   10G  0 dm   
  └─docker-253:0-264044-3eeef49defe35cf4b9b7c5988806b2a15678a15738e05a68e4d94655b9a204bb (dm-4)
                                    253:4    0   10G  0 dm   /var/lib/docker/devicemapper/mnt/3eeef49defe35cf4b9b7c5988806b2a15678a15738e05a68e
loop1                                 7:1    0    2G  0 loop 
└─docker-253:0-264044-pool (dm-2)   253:2    0  100G  0 dm   
  ├─docker-253:0-264044-base (dm-3) 253:3    0   10G  0 dm   
  └─docker-253:0-264044-3eeef49defe35cf4b9b7c5988806b2a15678a15738e05a68e4d94655b9a204bb (dm-4)
                                    253:4    0   10G  0 dm   /var/lib/docker/devicemapper/mnt/3eeef49defe35cf4b9b7c5988806b2a15678a15738e05a68e
sr0                                  11:0    1 1024M  0 rom  
sda                                   8:0    0   20G  0 disk 
├─sda1                                8:1    0  500M  0 part /boot
└─sda2                                8:2    0 19.5G  0 part 
  ├─vg_centos6-lv_root (dm-0)       253:0    0 17.5G  0 lvm  /
  └─vg_centos6-lv_swap (dm-1)       253:1    0    2G  0 lvm  [SWAP]
```