2015年12月11日金曜日

Oracle Linux 6.x の Docker 1.8 (docker-engine.x86_64)へのアップデート。

Oracle Linux 6 では、Public Yum で Docker の RPM が公開されています。
デフォルトでは無効になっていますが、public_ol6_addons というリポジトリにあります。

以前は RPM の名前が docker だったのですが、
Docker 1.8 ~ の RPM は、docker-engine という名前になりました。

すでに docker RPM がインストールされている場合、
Docker 1.8 ~ にバージョンアップ(docker-engine をインストールする)には、
いったん以前の docker の RPM を削除する必要があります。

ということで、Docker を 1.6 ~ 1.8 にアップデートしてみます。

今回の環境。

Oracle Linux 6.6 でカーネルは UEK です。
[root@docker-host01 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.6
[root@docker-host01 ~]# uname -r
3.8.13-44.1.1.el6uek.x86_64

Docker 1.6 の RPM は、すでに ORACLE の Public Yum サーバからインストールしてあります。
[root@docker-host01 ~]# yum list docker
読み込んだプラグイン:security
インストール済みパッケージ
docker.x86_64                           1.6.1-1.0.1.el6                           @public_ol6_addons

この Docker ホストには Docker イメージが登録されています。
けっこう放置されている Docker ホストです。
[root@docker-host01 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ol6                 v01                 cd272416c934        3 months ago        156.2 MB
oraclelinux         6                   cfc75fa9f295        4 months ago        156.2 MB

停止しているコンテナもいました。
[root@docker-host01 ~]# docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMESf6a525e98af1        oraclelinux:6       "/bin/bash"         3 months ago        Exited (137) 3 months ago                       cont01

以前、ストレージドライバを Btrfs に変更するためだけに作った Docker ホストでした。
[root@docker-host01 ~]# docker info
Containers: 1
Images: 4
Storage Driver: btrfs
Execution Driver: native-0.2
Kernel Version: 3.8.13-44.1.1.el6uek.x86_64
Operating System: <unknown>
CPUs: 1
Total Memory: 994.7 MiB
Name: docker-host01
ID: XMKW:Q7ZI:XKC3:KIEM:SQWR:MSYF:5KVP:3S25:DUBQ:PFE2:HGHU:WAGB

ただ追加で RPM インストールした場合の様子。

Public Yum サーバには、docker と docker-engine の RPM 両方があります。
[root@docker-host01 ~]# yum list docker-engine
読み込んだプラグイン:security
利用可能なパッケージ
docker-engine.x86_64                        1.8.3-1.0.1.el6                        public_ol6_addons

ためしに、ふつうに docker-engine RPM をインストールしてみようとすると、
既存の docker RPM と衝突してエラーになります。
[root@docker-host01 ~]# yum install docker-engine
読み込んだプラグイン:security
インストール処理の設定をしています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package docker-engine.x86_64 0:1.8.3-1.0.1.el6 will be インストール
--> 衝突を処理しています: docker-engine-1.8.3-1.0.1.el6.x86_64 は docker と衝突しています
--> 依存性解決を終了しました。
エラー: docker-engine conflicts with docker-1.6.1-1.0.1.el6.x86_64
問題を回避するために --skip-broken を用いることができません
これらを試行できます: rpm -Va --nofiles --nodigest

ということで、RPM をいったん削除する必要があります。


Docker 1.6 → 1.8 のアップデート。

Oracle Linux の Docker は、chkconfig 登録されます。
docker サービスを停止します。
[root@docker-host01 ~]# service docker stop
docker を停止中:                                           [  OK  ]

docker を削除します。
[root@docker-host01 ~]# yum remove docker
読み込んだプラグイン:security
削除処理の設定をしています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package docker.x86_64 0:1.6.1-1.0.1.el6 will be 削除
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
パッケージ        アーキテクチャ    バージョン                 リポジトリー                   容量
====================================================================================================
削除:
docker            x86_64            1.6.1-1.0.1.el6            @public_ol6_addons             21 M

トランザクションの要約
====================================================================================================
削除                 1 パッケージ

インストール済み容量: 21 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  削除中                  : docker-1.6.1-1.0.1.el6.x86_64                                       1/1
警告: /etc/sysconfig/docker は /etc/sysconfig/docker.rpmsave として保存されました。
  Verifying               : docker-1.6.1-1.0.1.el6.x86_64                                       1/1

削除しました:
  docker.x86_64 0:1.6.1-1.0.1.el6

完了しました!

docker-engine RPM をインストールします。
[root@docker-host01 ~]# yum install docker-engine
読み込んだプラグイン:security
インストール処理の設定をしています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package docker-engine.x86_64 0:1.8.3-1.0.1.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
パッケージ             アーキテクチャ  バージョン                 リポジトリー                容量
====================================================================================================
インストールしています:
docker-engine          x86_64          1.8.3-1.0.1.el6            public_ol6_addons          6.4 M

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

総ダウンロード容量: 6.4 M
インストール済み容量: 27 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
docker-engine-1.8.3-1.0.1.el6.x86_64.rpm                                     | 6.4 MB     00:04
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : docker-engine-1.8.3-1.0.1.el6.x86_64                                1/1
  Verifying               : docker-engine-1.8.3-1.0.1.el6.x86_64                                1/1

インストール:
  docker-engine.x86_64 0:1.8.3-1.0.1.el6

完了しました!

chkconfig のサービス名は、docker ままです。
[root@docker-host01 ~]# chkconfig --list | grep docker
docker          0:off   1:off   2:on    3:on    4:on    5:on    6:off

docker を起動します。
[root@docker-host01 ~]# service docker status
docker は停止しています
[root@docker-host01 ~]# service docker start
Starting docker:                                           [  OK  ]

Docker 1.8.3 です。
[root@docker-host01 ~]# docker version
Client:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   f0bb124
 Built:        Wed Oct 14 04:06:48 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.3
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   f0bb124
 Built:        Wed Oct 14 04:06:48 UTC 2015
 OS/Arch:      linux/amd64

ストレージドライバの設定は残されてました。
[root@docker-host01 ~]# docker info
Containers: 1
Images: 4
Storage Driver: btrfs
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.8.13-44.1.1.el6uek.x86_64
Operating System: <unknown>
CPUs: 1
Total Memory: 994.7 MiB
Name: docker-host01
ID: XMKW:Q7ZI:XKC3:KIEM:SQWR:MSYF:5KVP:3S25:DUBQ:PFE2:HGHU:WAGB

Docker イメージも、残っています。
[root@docker-host01 ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ol6                 v01                 cd272416c934        3 months ago        156.2 MB
oraclelinux         6                   cfc75fa9f295        4 months ago        156.2 MB

Docker コンテナも、残っています。
[root@docker-host01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@docker-host01 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
f6a525e98af1        oraclelinux:6       "/bin/bash"         3 months ago        Exited (137) 3 months ago                       cont01

既存のコンテナを起動できました。
[root@docker-host01 ~]# docker start cont01
cont01
[root@docker-host01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
f6a525e98af1        oraclelinux:6       "/bin/bash"         3 months ago        Up 2 seconds                            cont01

とりあえず新規コンテナも起動できました。
[root@docker-host01 ~]# docker run -itd oraclelinux:6 /bin/bash
c7c041a25e726a49bf479ce946a205b43c79317bd48a3db8f88a37d84c5b1077
[root@docker-host01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
c7c041a25e72        oraclelinux:6       "/bin/bash"         4 seconds ago       Up 3 seconds                            furious_bhaskara
f6a525e98af1        oraclelinux:6       "/bin/bash"         3 months ago        Up 21 seconds                           cont01

以上、OL 6.x での Docker 1.8 へのバージョンアップでした。

0 件のコメント:

コメントを投稿