EC-CUBEの開発環境を整えるために、CentOS8上にdocker&docker-composeをインストールする必要があったので、その過程を記載します。
結論から申しますと、CentOS7にdockerをインストールして開発した方がいいです。
CentOS8でdockerをインストールする
以降の作業はrootユーザにて行っている。
$ sudo su
dockerをインストールするためのリポジトリを追加する。
# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
リポジトリがインストールされたのか確認する。
dnf repolist -v
以下のように表示されていればOK。
...
Repo-id : docker-ce-stable
Repo-name : Docker CE Stable - x86_64
Repo-revision: 1573753657
Repo-updated : Thu 14 Nov 2019 05:47:37 PM UTC
Repo-pkgs : 57
Repo-size : 1.2 G
Repo-baseurl : https://download.docker.com/linux/centos/7/x86_64/stable
Repo-expire : 172,800 second(s) (last: Sun 02 Feb 2020 07:37:35 AM UTC)
Repo-filename: /etc/yum.repos.d/docker-ce.repo
...
dockerをインストールする
# dnf install docker-ce
とすると、以下のようにエラーとなる。
Last metadata expiration check: 0:01:43 ago on Sun 02 Feb 2020 07:37:35 AM UTC.
Error:
Problem: package docker-ce-3:19.03.5-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.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
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use
not only best candidate packages)
これは、CentOS8ではcontainerd.io >= 1.2.2-3
は、まだ提供されていないらしい。
よって、–nobest optionを追加してインストールする。
※ --nobest
を付けると、最新のもの(docker-ce-3:19.03)はインストールできないが、
古いパッケージ(docker-ce-3:18.09)がインストールされる。
# dnf -y install docker-ce --nobest
Last metadata expiration check: 0:04:06 ago on Sun 02 Feb 2020 07:37:35 AM UTC.
Dependencies resolved.
Problem: package docker-ce-3:19.03.5-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.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 Arch 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.107-2.module_el8.1.0+237+63e26edc
AppStream 44 k
checkpolicy x86_64 2.9-1.el8 BaseOS 348 k
libcgroup x86_64 0.41-19.el8 BaseOS 70 k
policycoreutils-python-utils noarch 2.9-3.el8 BaseOS 250 k
python3-audit x86_64 3.0-0.10.20180831git0047a6c.el8
BaseOS 85 k
python3-libsemanage x86_64 2.9-1.el8 BaseOS 127 k
python3-policycoreutils noarch 2.9-3.el8 BaseOS 2.2 M
python3-setools x86_64 4.2.2-1.el8 BaseOS 600 k
containerd.io x86_64 1.2.0-3.el7 docker-ce-stable 22 M
docker-ce-cli x86_64 1:19.03.5-3.el7 docker-ce-stable 39 M
Enabling module streams:
container-tools rhel8
Skipping packages with broken dependencies:
docker-ce x86_64 3:19.03.5-3.el7 docker-ce-stable 24 M
Transaction Summary
================================================================================
Install 11 Packages
Skip 1 Package
...
Running transaction
Preparing : 1/1
Installing : docker-ce-cli-1:19.03.5-3.el7.x86_64 1/11
Running scriptlet: docker-ce-cli-1:19.03.5-3.el7.x86_64 1/11
Installing : containerd.io-1.2.0-3.el7.x86_64 2/11
Running scriptlet: containerd.io-1.2.0-3.el7.x86_64 2/11
Installing : python3-setools-4.2.2-1.el8.x86_64 3/11
Installing : python3-libsemanage-2.9-1.el8.x86_64 4/11
Installing : python3-audit-3.0-0.10.20180831git0047a6c.el8.x86_ 5/11
Running scriptlet: libcgroup-0.41-19.el8.x86_64 6/11
Installing : libcgroup-0.41-19.el8.x86_64 6/11
Running scriptlet: libcgroup-0.41-19.el8.x86_64 6/11
Installing : checkpolicy-2.9-1.el8.x86_64 7/11
Installing : python3-policycoreutils-2.9-3.el8.noarch 8/11
Installing : policycoreutils-python-utils-2.9-3.el8.noarch 9/11
Installing : container-selinux-2:2.107-2.module_el8.1.0+237+63e 10/11
Running scriptlet: container-selinux-2:2.107-2.module_el8.1.0+237+63e 10/11
Running scriptlet: docker-ce-3:18.09.1-3.el7.x86_64 11/11
Installing : docker-ce-3:18.09.1-3.el7.x86_64 11/11
Running scriptlet: docker-ce-3:18.09.1-3.el7.x86_64 11/11
Verifying : container-selinux-2:2.107-2.module_el8.1.0+237+63e 1/11
Verifying : checkpolicy-2.9-1.el8.x86_64 2/11
Verifying : libcgroup-0.41-19.el8.x86_64 3/11
Verifying : policycoreutils-python-utils-2.9-3.el8.noarch 4/11
Verifying : python3-audit-3.0-0.10.20180831git0047a6c.el8.x86_ 5/11
Verifying : python3-libsemanage-2.9-1.el8.x86_64 6/11
Verifying : python3-policycoreutils-2.9-3.el8.noarch 7/11
Verifying : python3-setools-4.2.2-1.el8.x86_64 8/11
Verifying : containerd.io-1.2.0-3.el7.x86_64 9/11
Verifying : docker-ce-3:18.09.1-3.el7.x86_64 10/11
Verifying : docker-ce-cli-1:19.03.5-3.el7.x86_64 11/11
Installed:
docker-ce-3:18.09.1-3.el7.x86_64
container-selinux-2:2.107-2.module_el8.1.0+237+63e26edc.noarch
checkpolicy-2.9-1.el8.x86_64
libcgroup-0.41-19.el8.x86_64
policycoreutils-python-utils-2.9-3.el8.noarch
python3-audit-3.0-0.10.20180831git0047a6c.el8.x86_64
python3-libsemanage-2.9-1.el8.x86_64
python3-policycoreutils-2.9-3.el8.noarch
python3-setools-4.2.2-1.el8.x86_64
containerd.io-1.2.0-3.el7.x86_64
docker-ce-cli-1:19.03.5-3.el7.x86_64
Skipped:
docker-ce-3:19.03.5-3.el7.x86_64
Complete!
dokcerのstatusを確認する。
# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor pre>
Active: inactive (dead)
Docs: https://docs.docker.com
CentOS8起動時に、dockerも起動するようにする。
# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /u
sr/lib/systemd/system/docker.service.
dokcerのstatusを再確認する。enabled
になっているのでOK。
# systemctl is-enabled docker
enabled
CentOS8でdocker composeをインストールする
Gitのリポジトリから最新のversionをダウンロードする。
release noteから、最新のversionを確認できる。現在(2020/02/02)は、1.25.3
が最新。
# curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
ダウンロード完了後、docker-compose
をコマンドとして使用するために、
バイナリファイルに実行権限を付与する。
# chmod +x /usr/local/bin/docker-compose
コマンドが実行できるのかの確認として、以下を実行する。
# /usr/local/bin/docker-compose --version
docker-compose version 1.25.3, build d4d1b42b
rootユーザのPATHに、/usr/local/bin
を追加しておく。
# vi ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/bin/
export PATH
.bash_profile
の変更を反映する。
# source ~/.bash_profile
以下コマンドでrootユーザで実行できることを確認する。
# docker-compose --version
docker-compose version 1.25.3, build d4d1b42b
参考
CentOS8でDockerCEをinstallする
How to install Docker CE on RHEL 8 / CentOS 8