docker
RHEL
docker-ee

RHEL7にDocker EEをインストールする

More than 1 year has passed since last update.

仕事の関係で近くRHELにDocker EEのインストール方法を整理しておく必要に迫られる予感がしたので、以下まとめます。
インターネット非接続環境&RHNに接続しなくてもまあまあ簡単に導入できるのでそれは便利。

■RHEL7用Dockerの入手
https://www.docker.com/docker-red-hat-enterprise-linux-rhel

まあ、購入して使うのなら(日本で買えるのか知らないですけど)月$150とかを支払って製品版を購入します。
「Try It for Free」をクリックすると1ヶ月間有効なトライアル版を入手できます。営業さんとメールのやり取りを行うといった事も無く、連絡先等を入力すればDocker EEのオフラインインストール用rpmパッケージが入手できます。

  1. Trial版評価を申し込む。 q1.png

  2. 「Start your evaluation!」ボタンクリック後に遷移する画面の右下のURLをコピーする。多分、このURLが有効な期間が1ヶ月?
    q2.png

  3. WebブラウザでURLにアクセスする。 q3.png

  4. 「導入先RHELのバージョン」→「x86_64」→「stable」→「Packages」の順にリンクを辿って、導入する docker-ee と docker-ee-selinux の rpm ファイルをダウンロードする。
    今回訳有って RHEL7.2 用 docker-ee-17.03 の最新版をダウンロード(docker-ee-17.03.2.ee.6-1.el7.centos.x86_64.rpm と docker-ee-selinux-17.03.2.ee.6-1.el7.centos.noarch.rpm)。 q4.png

■RHEL7にDockerをインストールする

RHEL上のDockerがサポートされるためにはStorageドライバがdevicemapperでdirect-lvmモードにしなきゃいけないとか知ってました?
そんなわけでDockerインストールの前にOSにlvm領域をこしらえなければいけなかったりします。

Get Docker for Red Hat Enterprise Linux
https://docs.docker.com/v17.03/engine/installation/linux/rhel/

Configure direct-lvm mode for production
https://docs.docker.com/v17.03/engine/userguide/storagedriver/device-mapper-driver/#configure-direct-lvm-mode-for-production

  1. 仮想マシンに新しいディスクを追加する。
    まあ、物理的に追加しても良いでしょう。

  2. lvmを作る。追加したディスクがOSから/dev/sdbと認識されるとして、以下のコマンドを実行します。RHEL7.2には device-mapper-persistent-data、lvm2 パッケージはインストール済みではないかと思います。
(以下のコマンドを実行)
# fdisk /dev/sdb
    n↓↓↓↓↓t↓8e↓w↓
# pvcreate /dev/sdb1
# vgcreate docker /dev/sdb1
# lvcreate --wipesignatures y -n thinpool docker -l 95%VG
# lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG
# lvconvert -y --zero n -c 512K --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta
# cat > /etc/lvm/profile/docker-thinpool.profile << EOF
activation {
  thin_pool_autoextend_threshold=80
  thin_pool_autoextend_percent=20
}
EOF
# lvchange --metadataprofile docker-thinpool docker/thinpool



3. docker-ee rpmファイル2つをRHEL7に送りつける。
docker-ee-17.03.2.ee.6-1.el7.centos.x86_64.rpm
docker-ee-selinux-17.03.2.ee.6-1.el7.centos.noarch.rpm


4. docker-eeをインストールする。

(以下のコマンドを実行)
# yum install docker-ee-selinux-17.03.2.ee.6-1.el7.centos.noarch.rpm
# yum install docker-ee-17.03.2.ee.6-1.el7.centos.x86_64.rpm
# mkdir /etc/docker

依存パッケージとして以下が一緒にインストールされるので要準備(すべてRHEL OSのインストールディスクに含まれています)。

audit-libs-python
checkpolicy
libcgroup
libsemanage-python
policycoreutils-python
python-IPy
setools-libs
libseccomp
libtool-ltdl

また、docker-ee-selinuxのインストール中に以下の警告が表示されますが無視できます。

restorecon:  lstat(/var/lib/docker) failed:  No such file or directory
warning: %post(docker-ee-selinux-17.03.2.ee.6-1.el7.centos.noarch) scriptlet failed, exit status 255
Non-fatal POSTIN scriptlet failure in rpm package docker-ee-selinux-17.03.2.ee.6-1.el7.centos.noarch



5. devicemapperを設定する。

(以下のコマンドを実行)
# cat > /etc/docker/daemon.json << EOF
{
    "storage-driver": "devicemapper",
    "storage-opts": [
    "dm.thinpooldev=/dev/mapper/docker-thinpool",
    "dm.use_deferred_removal=true"
    ]
}
EOF



5. dockerのサービスを有効にする。

(以下のコマンドを実行)
# systemctl enable docker
# systemctl start docker



docker info とコマンドを実行してそれらしい情報が出力されればdocker-eeの導入完了。

# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 17.03.2-ee-6
Storage Driver: devicemapper
 Pool Name: docker-thinpool
 Pool Blocksize: 524.3 kB
 Base Device Size: 10.74 GB
...


で、まあ、試用期間1ヶ月という認識では有りますが、何かdocker infoの出力結果を見ても、docker-engine部分については一ヵ月後に突然使えなくなるという感じも無く・・まあ、一ヶ月後も環境が残っていてdocker起動しないとかいう事があったら本記事を更新します。