AWS RHEL7.6にDockerをインストールするのに色々と調査が必要で時間がかかったのでまとめます。
公式サイトを確認しましたがDocker公式のインストール手順にはRHELにインストールする手順はありません。Docker公式のCentOSでのインストール手順で実施してみましたがインストールすることが出来ませんでした。
yum-utilsインストール
インストール作業でyum-config-managerを使用するため、yum-utilsをインストールします。
$ sudo yum install -y yum-utils
Extrasリポジトリを有効化
RHEL7.6ではExtrasリポジトリを有効化する必要があります。有効にするExtrasリポジトリをを確認するため、設定されているリポジトリ一覧を確認。
$ sudo yum repolist all Loaded plugins: amazon-id, search-disabled-repos repo id repo name status rhel-7-server-dotnet-rhui-debug-rpms/7Server/x86_64 dotNET on RHEL Debug RPMs for Red Hat Enterprise Linux 7 Server from RHUI disabled rhel-7-server-dotnet-rhui-rpms/7Server/x86_64 dotNET on RHEL RPMs for Red Hat Enterprise Linux 7 Server from RHUI disabled rhel-7-server-dotnet-rhui-source-rpms/7Server/x86_64 dotNET on RHEL Source RPMs for Red Hat Enterprise Linux 7 Server from RHUI disabled rhel-7-server-rhui-debug-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server from RHUI (Debug RPMs) disabled rhel-7-server-rhui-extras-debug-rpms/x86_64 Red Hat Enterprise Linux 7 Server - Extras from RHUI (Debug RPMs) disabled rhel-7-server-rhui-extras-rpms/x86_64 Red Hat Enterprise Linux 7 Server - Extras from RHUI (RPMs) disabled rhel-7-server-rhui-extras-source-rpms/x86_64 Red Hat Enterprise Linux 7 Server - Extras from RHUI (Source RPMs) disabled rhel-7-server-rhui-optional-debug-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - Optional from RHUI (Debug RPMs) disabled rhel-7-server-rhui-optional-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - Optional from RHUI (RPMs) disabled rhel-7-server-rhui-optional-source-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - Optional from RHUI (Source RPMs) disabled rhel-7-server-rhui-rh-common-debug-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - RH Common from RHUI (Debug RPMs) disabled rhel-7-server-rhui-rh-common-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - RH Common from RHUI (RPMs) enabled: 243 rhel-7-server-rhui-rh-common-source-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - RH Common from RHUI (Source RPMs) disabled rhel-7-server-rhui-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server from RHUI (RPMs) enabled: 29,431 rhel-7-server-rhui-source-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server from RHUI (Source RPMs) disabled rhel-7-server-rhui-supplementary-debug-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - Supplementary from RHUI (Debug RPMs) disabled rhel-7-server-rhui-supplementary-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - Supplementary from RHUI (RPMs) disabled rhel-7-server-rhui-supplementary-source-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server - Supplementary from RHUI (Source RPMs) disabled rhel-server-rhui-rhscl-7-debug-rpms/7Server/x86_64 Red Hat Software Collections Debug RPMs for Red Hat Enterprise Linux 7 Server from RHUI disabled rhel-server-rhui-rhscl-7-rpms/7Server/x86_64 Red Hat Software Collections RPMs for Red Hat Enterprise Linux 7 Server from RHUI disabled rhel-server-rhui-rhscl-7-source-rpms/7Server/x86_64 Red Hat Software Collections Source RPMs for Red Hat Enterprise Linux 7 Server from RHUI disabled rhui-client-config-server-7/x86_64 Custom Repositories - Red Hat Update Infrastructure 3 Client Configuration Server 7 enabled: 11 repolist: 29,685
リポジトリを使用できるようにするには、上記リストを有効化する必要がある。上記の「rhel-7-server-rhui-extras-rpms」を有効化する
$ sudo yum-config-manager --enable rhel-7-server-rhui-extras-rpms
Dockerインストール
有効化されているリポジトリからDockerがインストールできるか確認
$ sudo yum info docker Loaded plugins: amazon-id, search-disabled-repos Available Packages Name : docker Arch : x86_64 Epoch : 2 Version : 1.13.1 Release : 162.git64e9980.el7_8 Size : 18 M Repo : rhel-7-server-rhui-extras-rpms/x86_64 Summary : Automates deployment of containerized applications URL : https://github.com/docker/docker License : ASL 2.0 Description : Docker is an open-source engine that automates the deployment of any : application as a lightweight, portable, self-sufficient container that will : run virtually anywhere. : : Docker containers can encapsulate any payload, and will run consistently on : and between virtually any server. The same container that a developer builds : and tests on a laptop will run at scale, in production*, on VMs, bare-metal : servers, OpenStack clusters, public instances, or combinations of the above.
できることが確認できました。やってみる。できた
$ sudo yum install docker
設定
dockerコマンドをec2-userで実行するための設定をします。
Dockerは何で実行されているかの確認。グループ一覧を表示
$ cat /etc/group | grep docker dockerroot:x:994:
おそらくDockerはdockerrootグループで実行されているしょう。
ec2-userをdockerrootグループに所属させます。
$ sudo usermod -a -G dockerroot ec2-user
確認
$ groups ec2-user ec2-user : ec2-user adm wheel systemd-journal dockerroot
ググったところ、Dockerサービス起動していないとダメらしい。起動する。
$ sudo systemctl start docker
確認。できた。
$ sudo docker version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-162.git64e9980.el7_8.x86_64 Go version: go1.10.3 Git commit: 64e9980/1.13.1 Built: Mon Jun 22 03:20:20 2020 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-162.git64e9980.el7_8.x86_64 Go version: go1.10.3 Git commit: 64e9980/1.13.1 Built: Mon Jun 22 03:20:20 2020 OS/Arch: linux/amd64 Experimental: false
今回は権限ではじかれていること確認
$ docker version Client: Version: 1.13.1 API version: 1.26 Package version: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/version: dial unix /var/run/docker.sock: connect: permission denied
root rootで実行されていること確認。
$ ls -l /var/run/docker.sock srw-rw----. 1 root root 0 Sep 15 02:27 /var/run/docker.sock
次のように変更する。
$ sudo chown root:dockerroot /var/run/docker.sock
確認。できた。
$ docker version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-162.git64e9980.el7_8.x86_64 Go version: go1.10.3 Git commit: 64e9980/1.13.1 Built: Mon Jun 22 03:20:20 2020 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-162.git64e9980.el7_8.x86_64 Go version: go1.10.3 Git commit: 64e9980/1.13.1 Built: Mon Jun 22 03:20:20 2020 OS/Arch: linux/amd64 Experimental: false
はまったこと
様々なサイトではリポジトリ追加しそのリポジトリからインストールすると記載されていますが、私の環境ではその方法は出来ませんでした。
リポジトリ追加
リポジトリ追加
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
追加されたことを確認
$ ls -l /etc/yum.repos.d total 48 -rw-r--r--. 1 root root 2424 Jul 28 11:08 docker-ce.repo -rw-r--r--. 1 root root 4745 Aug 11 09:35 redhat-rhui-beta.repo.disabled -rw-r--r--. 1 root root 504 Sep 14 14:00 redhat-rhui-client-config.repo -rw-r--r--. 1 root root 607 Sep 14 13:44 redhat-rhui-client-config.repo.rpmsave -rw-r--r--. 1 root root 10142 Sep 14 14:00 redhat-rhui.repo -rw-r--r--. 1 root root 8679 Sep 14 13:44 redhat-rhui.repo.rpmsave -rw-r--r--. 1 root root 38 Sep 14 13:48 rhui-load-balancers.conf.rpmsave
Dockerインストール
$ sudo yum install docker-ce docker-ce-cli containerd.io Loaded plugins: amazon-id, search-disabled-repos docker-ce-stable | 3.5 kB 00:00:00 (1/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:00 (2/2): docker-ce-stable/x86_64/primary_db | 45 kB 00:00:00 Resolving Dependencies --> Running transaction check ---> Package containerd.io.x86_64 0:1.2.13-3.2.el7 will be installed --> Processing Dependency: container-selinux >= 2:2.74 for package: containerd.io-1.2.13-3.2.el7.x86_64 ---> Package docker-ce.x86_64 3:19.03.12-3.el7 will be installed --> Processing Dependency: container-selinux >= 2:2.74 for package: 3:docker-ce-19.03.12-3.el7.x86_64 ---> Package docker-ce-cli.x86_64 1:19.03.12-3.el7 will be installed --> Finished Dependency Resolution Error: Package: containerd.io-1.2.13-3.2.el7.x86_64 (docker-ce-stable) Requires: container-selinux >= 2:2.74 Error: Package: 3:docker-ce-19.03.12-3.el7.x86_64 (docker-ce-stable) Requires: container-selinux >= 2:2.74 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
エラーが起きる。EC2のRHEL7.6はこのリポジトリからインストールすることは出来ないらしい。なので削除。
$ sudo rm -f /etc/yum.repos.d/docker-ce.repo
リポジトリを有効化
EC2のRHEL7系で使用できると記述されていたリポジトリを有効化してみました。しかしこれも失敗に終わりました。
$ sudo yum-config-manager --enable rhui-REGION-rhel-server-extras Loaded plugins: amazon-id
改めて、Dockerインストール
$ sudo yum -y install docker Loaded plugins: amazon-id, search-disabled-repos No package docker available. Error: Nothing to do
amazon-linux-extrasでインストール
Amazon Linuxではこのようにインストールするとのこと。試してみたがこれもダメでした。
$ sudo amazon-linux-extras install docker sudo: amazon-linux-extras: command not found
Docker起動していないとバージョン表示されない
起動していない状態でバージョン確認すると、次のようなメッセージが表示される。これを権限が無いからだと思って対処をしたが変わらず、起動していないと表示されるものだと判明した。
$ docker version Client: Version: 1.13.1 API version: 1.26 Package version: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?