2016年1月24日日曜日

Oracle Linux 7.x の Docker 1.9 は、UEK R4 が前提となっている。

Oracle Linux 7.2 に、Docker 1.9 の RPM (docker-engine-1.9.1-1.0.1)を
インストールしてみました。
どうやら Oracle Linux での Docker 1.9 は、UEK R4 を前提としているようです。

今回の Docker インストール先の環境。
カーネルはまだ UEK R3(3.8.13)です。
[root@ol72-min02 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.2
[root@ol72-min02 ~]# uname -r
3.8.13-98.7.1.el7uek.x86_64

はじめの、Yum リポジトリの登録状態です。
Oracle Linux 7.x の Docker RPM は、「ol7_addons」にあります。
[root@ol72-min02 ~]# yum repolist
読み込んだプラグイン:ulninfo
リポジトリー ID            リポジトリー名                                                                            状態
ol7_UEKR3/x86_64           Latest Unbreakable Enterprise Kernel Release 3 for Oracle Linux 7Server (x86_64)             372
ol7_addons/x86_64          Oracle Linux 7Server Add ons (x86_64)                                                        151
ol7_latest/x86_64          Oracle Linux 7Server Latest (x86_64)                                                      13,563
repolist: 14,086

インストールしたい Docker RPM はこれです。
[root@ol72-min02 ~]# yum list docker-engine
読み込んだプラグイン:ulninfo
利用可能なパッケージ
docker-engine.x86_64                         1.9.1-1.0.1.el7                          ol7_addons

RPM の依存パッケージを見てみると、
Docker 1.9 では、UEK R4 以上(4.1.~)のカーネルを必要としていました。
[root@ol72-min02 ~]# yum deplist docker-engine
読み込んだプラグイン:ulninfo
パッケージ    : docker-engine.x86_64 1.9.1-1.0.1.el7
  依存性      : /bin/sh
   provider: bash.x86_64 4.2.46-19.el7
  依存性      : config(docker-engine) = 1.9.1-1.0.1.el7
   provider: docker-engine.x86_64 1.9.1-1.0.1.el7
  依存性      : docker-engine-selinux >= %{epoch}:1.9.1-1.0.1.el7
   provider: docker-engine-selinux.noarch 1.9.1-1.0.1.el7
  依存性      : iptables
   provider: iptables-services.x86_64 1.4.21-16.el7
   provider: iptables.x86_64 1.4.21-16.el7
   provider: iptables.i686 1.4.21-16.el7
  依存性      : kernel-uek >= 4.1
   provider: kernel-uek-debug.x86_64 4.1.12-32.1.2.el7uek
   provider: kernel-uek.x86_64 4.1.12-32.1.2.el7uek
  依存性      : libc.so.6()(64bit)
   provider: glibc.x86_64 2.17-106.0.1.el7_2.1
  依存性      : libc.so.6(GLIBC_2.14)(64bit)
   provider: glibc.x86_64 2.17-106.0.1.el7_2.1
  依存性      : libc.so.6(GLIBC_2.17)(64bit)
   provider: glibc.x86_64 2.17-106.0.1.el7_2.1
  依存性      : libc.so.6(GLIBC_2.2.5)(64bit)
   provider: glibc.x86_64 2.17-106.0.1.el7_2.1
  依存性      : libc.so.6(GLIBC_2.4)(64bit)
   provider: glibc.x86_64 2.17-106.0.1.el7_2.1
  依存性      : libc.so.6(GLIBC_2.9)(64bit)
   provider: glibc.x86_64 2.17-106.0.1.el7_2.1
  依存性      : libcgroup
   provider: libcgroup.x86_64 0.41-8.el7
   provider: libcgroup.i686 0.41-8.el7
  依存性      : libdevmapper.so.1.02()(64bit)
   provider: device-mapper-libs.x86_64 7:1.02.107-5.el7
  依存性      : libdevmapper.so.1.02(Base)(64bit)
   provider: device-mapper-libs.x86_64 7:1.02.107-5.el7
  依存性      : libdevmapper.so.1.02(DM_1_02_97)(64bit)
   provider: device-mapper-libs.x86_64 7:1.02.107-5.el7
  依存性      : libdl.so.2()(64bit)
   provider: glibc.x86_64 2.17-106.0.1.el7_2.1
  依存性      : libpthread.so.0()(64bit)
   provider: glibc.x86_64 2.17-106.0.1.el7_2.1
  依存性      : libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc.x86_64 2.17-106.0.1.el7_2.1
  依存性      : libsystemd.so.0()(64bit)
   provider: systemd-libs.x86_64 219-19.0.2.el7
  依存性      : libsystemd.so.0(LIBSYSTEMD_209)(64bit)
   provider: systemd-libs.x86_64 219-19.0.2.el7
  依存性      : rtld(GNU_HASH)
   provider: glibc.x86_64 2.17-106.0.1.el7_2.1
   provider: glibc.i686 2.17-106.0.1.el7_2.1
  依存性      : selinux-policy >= 3.13.1-23
   provider: selinux-policy.noarch 3.13.1-60.0.1.el7
  依存性      : systemd-units
   provider: systemd.x86_64 219-19.0.2.el7
  依存性      : tar
   provider: tar.x86_64 2:1.26-29.el7
  依存性      : xz
   provider: xz.x86_64 5.1.2-12alpha.el7

このままだと依存関係の都合で、通常の yum install は通りません。
※ちなみに、Red Hat 互換カーネルでも、UEK R4 の依存関係でエラーになります。

そこで UEK R4 をインストールすべく、リポジトリを追加登録します。

/etc/yum.repos.d/public-yum-ol7-uekr4.repo ファイルを追加。
[ol7_UEKR4]
name=Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux $releasever ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL7/UEKR4/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

リポジトリの一覧はこうなります。
[root@ol72-min02 ~]# yum repolist
読み込んだプラグイン:ulninfo
リポジトリー ID   リポジトリー名                                                          状態
ol7_UEKR3/x86_64  Latest Unbreakable Enterprise Kernel Release 3 for Oracle Linux 7Server    372
ol7_UEKR4/x86_64  Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux 7Server     26
ol7_addons/x86_64 Oracle Linux 7Server Add ons (x86_64)                                      151
ol7_latest/x86_64 Oracle Linux 7Server Latest (x86_64)                                    13,563
repolist: 14,112

docker-engine をインストールします。
[root@ol72-min02 ~]# yum install -y docker-engine
読み込んだプラグイン:ulninfo
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ docker-engine.x86_64 0:1.9.1-1.0.1.el7 を インストール

(省略)

インストール:
  docker-engine.x86_64 0:1.9.1-1.0.1.el7              kernel-uek.x86_64 0:4.1.12-32.1.2.el7uek
  kernel-uek-firmware.noarch 0:4.1.12-32.1.2.el7uek

依存性関連をインストールしました:
  audit-libs-python.x86_64 0:2.4.1-5.el7
  checkpolicy.x86_64 0:2.1.12-6.el7
  docker-engine-selinux.noarch 0:1.9.1-1.0.1.el7
  libcgroup.x86_64 0:0.41-8.el7
  libsemanage-python.x86_64 0:2.1.10-18.el7
  policycoreutils-python.x86_64 0:2.2.5-20.0.1.el7
  python-IPy.noarch 0:0.75-6.el7
  setools-libs.x86_64 0:3.3.7-46.el7

完了しました! 

OS を再起動して、アップデートしたカーネルを読み込みます。
[root@ol72-min02 ~]# reboot

カーネルが URK R4 のバージョンになりました。
[root@ol72-min02 ~]# uname -r
4.1.12-32.1.2.el7uek.x86_64

Docker のサービスを起動します。
[root@ol72-min02 ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@ol72-min02 ~]# systemctl start docker

バージョンは 1.9.1 です。
[root@ol72-min02 ~]# docker info
Containers: 0
Images: 0
Server Version: 1.9.1
Storage Driver: devicemapper
 Pool Name: docker-251:0-480059-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 107.4 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 53.74 MB
 Data Space Total: 107.4 GB
 Data Space Available: 9.298 GB
 Metadata Space Used: 606.2 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.107-RHEL7 (2015-10-14)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.1.12-32.1.2.el7uek.x86_64
Operating System: Oracle Linux Server 7.2
CPUs: 1
Total Memory: 1.701 GiB
Name: ol72-min02
ID: OPXX:YXNN:WEDP:33LU:PF3Y:QJA2:DRNY:5IH2:OAE6:ATPC:UG63:KBEJ

ちなみに、Docker Hub オフィシャルの Oracle Linux イメージも
最新は Oracle Linux 7.2 になってました。
[root@ol72-min02 ~]# docker pull oraclelinux
Using default tag: latest
latest: Pulling from library/oraclelinux
f359075ce4d8: Pull complete
df9c05f5df07: Pull complete
bea04efc3319: Pull complete
Digest: sha256:2e1fc3ffe4f5ca46d55ac0e9d2463299063ecd68d48582ed0531c268155895ec
Status: Downloaded newer image for oraclelinux:latest
[root@ol72-min02 ~]# docker run --rm oraclelinux cat /etc/oracle-release
Oracle Linux Server release 7.2

Oracle Linux のナウい系のものは、
たまに最新の UEK にバージョンアップが必要なものがある気がします。

以上、Oracle Linux 7.x に Docker 1.9 をインストールしてみた話でした。

0 件のコメント:

コメントを投稿