構築環境
$ cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
インストール
公式手順:https://docs.docker.com/engine/install/centos/
非公式翻訳手順:http://docs.docker.jp/engine/installation/linux/docker-ce/centos.html
OSを最新状態にする
$ yum update
$ yum upgrade
旧バージョンのDockerをアンインストールする
$ yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
安定したYumリポジトリのセットアップ
$ yum install -y yum-utils device-mapper-persistent-data lvm2
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Dockerのインストール
$ yum install docker-ce docker-ce-cli containerd.io
上記コマンドでは、パッケージの依存関係でdocker-ceがインストールエラーとなる。
※ 2020/4/29時点
そこで、「--nobest」オプションを指定して実行することで、最新版ではないがインストールに成功した。
$ yum install --nobest docker-ce
Last metadata expiration check: 0:09:23 ago on Wed 29 Apr 2020 01:16:58 AM JST.
Dependencies resolved.
Problem: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
- cannot install the best candidate for the job
- package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
- package containerd.io-1.2.13-3.1.el7.x86_64 is excluded
- package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
- package containerd.io-1.2.2-3.el7.x86_64 is excluded
- package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
- package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
- package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
================================================================================================================================================================
Package Architecture Version Repository Size
================================================================================================================================================================
Installing:
docker-ce x86_64 3:18.09.1-3.el7 docker-ce-stable 19 M
Installing dependencies:
container-selinux noarch 2:2.124.0-1.module_el8.1.0+298+41f9343a AppStream 47 k
libcgroup x86_64 0.41-19.el8 BaseOS 70 k
policycoreutils-python-utils noarch 2.9-3.el8_1.1 BaseOS 250 k
containerd.io x86_64 1.2.0-3.el7 docker-ce-stable 22 M
docker-ce-cli x86_64 1:19.03.8-3.el7 docker-ce-stable 40 M
Enabling module streams:
container-tools rhel8
Skipping packages with broken dependencies:
docker-ce x86_64 3:19.03.8-3.el7 docker-ce-stable 25 M
Transaction Summary
================================================================================================================================================================
Install 6 Packages
Skip 1 Package
Total download size: 81 M
Installed size: 339 M
Is this ok [y/N]: y
Downloading Packages:
(1/6): libcgroup-0.41-19.el8.x86_64.rpm 3.2 MB/s | 70 kB 00:00
(2/6): policycoreutils-python-utils-2.9-3.el8_1.1.noarch.rpm 6.5 MB/s | 250 kB 00:00
(3/6): container-selinux-2.124.0-1.module_el8.1.0+298+41f9343a.noarch.rpm 932 kB/s | 47 kB 00:00
(4/6): docker-ce-18.09.1-3.el7.x86_64.rpm 6.6 MB/s | 19 MB 00:02
(5/6): docker-ce-cli-19.03.8-3.el7.x86_64.rpm 10 MB/s | 40 MB 00:03
(6/6): containerd.io-1.2.0-3.el7.x86_64.rpm 5.0 MB/s | 22 MB 00:04
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 16 MB/s | 81 MB 00:05
warning: /var/cache/dnf/docker-ce-stable-091d8a9c23201250/packages/containerd.io-1.2.0-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
Docker CE Stable - x86_64 4.4 kB/s | 1.6 kB 00:00
Importing GPG key 0x621E9F35:
Userid : "Docker Release (CE rpm) <docker@docker.com>"
Fingerprint: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
From : https://download.docker.com/linux/centos/gpg
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : docker-ce-cli-1:19.03.8-3.el7.x86_64 1/6
Running scriptlet: docker-ce-cli-1:19.03.8-3.el7.x86_64 1/6
Installing : containerd.io-1.2.0-3.el7.x86_64 2/6
Running scriptlet: containerd.io-1.2.0-3.el7.x86_64 2/6
Installing : policycoreutils-python-utils-2.9-3.el8_1.1.noarch 3/6
Running scriptlet: container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.noarch 4/6
Installing : container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.noarch 4/6
Running scriptlet: container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.noarch 4/6
Running scriptlet: libcgroup-0.41-19.el8.x86_64 5/6
Installing : libcgroup-0.41-19.el8.x86_64 5/6
Running scriptlet: libcgroup-0.41-19.el8.x86_64 5/6
Running scriptlet: docker-ce-3:18.09.1-3.el7.x86_64 6/6
Installing : docker-ce-3:18.09.1-3.el7.x86_64 6/6
Running scriptlet: docker-ce-3:18.09.1-3.el7.x86_64 6/6
Running scriptlet: container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.noarch 6/6
Running scriptlet: docker-ce-3:18.09.1-3.el7.x86_64 6/6
Verifying : container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.noarch 1/6
Verifying : libcgroup-0.41-19.el8.x86_64 2/6
Verifying : policycoreutils-python-utils-2.9-3.el8_1.1.noarch 3/6
Verifying : containerd.io-1.2.0-3.el7.x86_64 4/6
Verifying : docker-ce-3:18.09.1-3.el7.x86_64 5/6
Verifying : docker-ce-cli-1:19.03.8-3.el7.x86_64 6/6
Installed:
docker-ce-3:18.09.1-3.el7.x86_64 container-selinux-2:2.124.0-1.module_el8.1.0+298+41f9343a.noarch libcgroup-0.41-19.el8.x86_64
policycoreutils-python-utils-2.9-3.el8_1.1.noarch containerd.io-1.2.0-3.el7.x86_64 docker-ce-cli-1:19.03.8-3.el7.x86_64
Skipped:
docker-ce-3:19.03.8-3.el7.x86_64
Complete!
2020/4/29時点では、以下のバージョンがインストールされた。
$ docker -v
Docker version 19.03.8, build afacb8b
Dockerの起動
$ systemctl start docker
Dockerが正しくインストールされていることを確認するため、hello-worldイメージを実行する。
$ docker run hello-world
「Hello from Docker!」の文字列が表示されれば、正しくインストールされている。
OS起動時にDockerが自動起動するように設定する。
$ systemctl enable docker
【番外編】プロキシ環境下の設定
プロキシに関する設定を追加する。プロキシサーバを経由しないホストやドメインをNO_PROXYに設定する。以下の例では、ローカルホストとexample.domain.comドメインをNO_PROXYに設定した。
$ mkdir -p /etc/systemd/system/docker.service.d
$ vi /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://example.proxy.com:8080"
Environment="HTTPS_PROXY=http://example.proxy.com:8080"
Environment="NO_PROXY=127.0.0.1,localhost,.example.domain.com"
以下のコマンドで、プロキシの設定反映する。
$ systemctl daemon-reload
$ systemctl restart docker
アンインストール
Docker Engine、CLI、およびContainerdパッケージをアンインストールする。
$ yum remove docker-ce docker-ce-cli containerd.io
ホスト上のイメージ、コンテナー、ボリューム、またはカスタマイズされた構成ファイルは、自動的に削除されない。すべてのイメージ、コンテナー、ボリュームを削除するために、以下を実行する。
$ rm -rf /var/lib/docker