CentOS9 dockerとdocker composeをインストールする

CentOS9 dockerとdocker composeをインストールする

CentOS9にdockerとdocker composeをインストールするまでの手順です。

環境

  • OS  CentOS Stream release 9

リポジトリ追加

まずはアップデートして、リポジトリを追加します。

$ sudo dnf update

$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

以下のエラーが発生した場合は、少し待ってから再度実行してみて下さい。

Curl error (7): Couldn't connect to server for https://download.docker.com/linux/centos/docker-ce.repo [Failed to connect to download.docker.com port 443: ホストへの経路がありません]
エラー: repo の設定に失敗しました

追加したリポジトリを確認します。

$ dnf repolist

repo id                                                  repo の名前
appstream                                                CentOS Stream 9 - AppStream
baseos                                                   CentOS Stream 9 - BaseOS
docker-ce-stable                                         Docker CE Stable - x86_64
extras-common                                            CentOS Stream 9 - Extras packages
mongodb-org-6.0                                          MongoDB Repository
pgdg-common                                              PostgreSQL common RPMs for RHEL / Rocky 9 - x86_64
pgdg10                                                   PostgreSQL 10 for RHEL / Rocky 9 - x86_64
pgdg11                                                   PostgreSQL 11 for RHEL / Rocky 9 - x86_64
pgdg12                                                   PostgreSQL 12 for RHEL / Rocky 9 - x86_64
pgdg13                                                   PostgreSQL 13 for RHEL / Rocky 9 - x86_64
pgdg14                                                   PostgreSQL 14 for RHEL / Rocky 9 - x86_64

dockerインストール

まずは、現行のものがあれば削除しておきます。

$ sudo dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

一致した引数がありません: docker
一致した引数がありません: docker-client
一致した引数がありません: docker-client-latest
一致した引数がありません: docker-common
一致した引数がありません: docker-latest
一致した引数がありません: docker-latest-logrotate
一致した引数がありません: docker-logrotate
一致した引数がありません: docker-engine
削除対象のパッケージはありません。
依存関係が解決しました。
行うべきことはありません。
完了しました!

必要なパッケージをインストールしておきます。

$ sudo dnf -y install device-mapper-persistent-data lvm2

次に、dockerをインストールします。
自分の場合は、以下のエラーが発生しました。

$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 問題: インストール済パッケージの問題 buildah-1:1.26.4-1.el9.x86_64
  - パッケージ buildah-1:1.26.4-1.el9.x86_64 には runc >= 1.0.0-26 が必要ですが、どのプロバイダーからもインストールできません
  - パッケージ buildah-1:1.24.1-1.el9.x86_64 には runc >= 1.0.0-26 が必要ですが、どのプロバイダーからもインストールできません
  - パッケージ buildah-1:1.25.1-1.el9.x86_64 には runc >= 1.0.0-26 が必要ですが、どのプロバイダーからもインストールできません
  - パッケージ buildah-1:1.26.1-3.el9.x86_64 には runc >= 1.0.0-26 が必要ですが、どのプロバイダーからもインストールできません
  - パッケージ buildah-1:1.26.1-4.el9.x86_64 には runc >= 1.0.0-26 が必要ですが、どのプロバイダーからもインストールできません
  - パッケージ containerd.io-1.6.7-3.1.el9.x86_64 は runc と競合しています。これは runc-4:1.1.3-2.el9.x86_64 により提供されます
  - パッケージ containerd.io-1.6.7-3.1.el9.x86_64 は runc を廃止しました。これは runc-4:1.1.3-2.el9.x86_64 により提供されます
  - パッケージ containerd.io-1.6.7-3.1.el9.x86_64 は runc と競合しています。これは runc-4:1.0.3-4.el9.x86_64 により提供されます
  - パッケージ containerd.io-1.6.7-3.1.el9.x86_64 は runc を廃止しました。これは runc-4:1.0.3-4.el9.x86_64 により提供されます
  - パッケージ containerd.io-1.6.7-3.1.el9.x86_64 は runc と競合しています。これは runc-4:1.0.3-5.el9.x86_64 により提供されます
  - パッケージ containerd.io-1.6.7-3.1.el9.x86_64 は runc を廃止しました。これは runc-4:1.0.3-5.el9.x86_64 により提供されます
  - パッケージ containerd.io-1.6.7-3.1.el9.x86_64 は runc と競合しています。これは runc-4:1.1.2-1.el9.x86_64 により提供されます
  - パッケージ containerd.io-1.6.7-3.1.el9.x86_64 は runc を廃止しました。これは runc-4:1.1.2-1.el9.x86_64 により提供されます
  - パッケージ containerd.io-1.6.7-3.1.el9.x86_64 は runc と競合しています。これは runc-4:1.1.3-1.el9.x86_64 により提供されます
  - パッケージ containerd.io-1.6.7-3.1.el9.x86_64 は runc を廃止しました。これは runc-4:1.1.3-1.el9.x86_64 により提供されます
  - ジョブの最良アップデート候補をインストールできません
(競合するパッケージを置き換えるには、コマンドラインに '--allowerasing' を追加してみてください または、'--skip-broken' を追加して、インストール不可のパッケージをスキップしてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)

「–allowerasing」をつけて、インストールします。

$ sudo dnf install docker-ce --allowerasing

インストールが完了したら、バージョンを確認してみます。

$ docker -v

Docker version 20.10.17, build 100c701

起動と自動起動を設定します。

$ sudo systemctl enable docker
$ sudo systemctl start docker

dockerをユーザーで実行

dockerをユーザーで実行できるようにdockerグループに追加しておきます。

$ sudo usermod -aG docker ${USER}

$ newgrp docker

$ id $USER
uid=1000(testuser) gid=1000(testuser) groups=1000(testuser),10(wheel),975(docker)

「hello world」ができればインストールは完了です。

$ docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:7d246653d0511db2a6b2e0436cfd0e52ac8c066000264b3ce63331ac66dca625
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

「hello world」できれば、以下のコマンドを実行して、削除しておきます。

$ docker rm $(docker ps -q -a)

9ea6decd2b8c

$ docker rmi $(docker images -q)

Untagged: hello-world:latest
Untagged: hello-world@sha256:7d246653d0511db2a6b2e0436cfd0e52ac8c066000264b3ce63331ac66dca625
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359

docker composeインストール

docker composeもインストールしておきます。
こちらのサイトから最新を確認してダウンロードします。

$ sudo wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-linux-x86_64

wgetがなければインストールします。

$ sudo dnf install wget

権限も設定しておきます。

$ sudo chmod +x /usr/local/bin/docker-compose

バージョンを確認すると、最新のバージョンである「1.29.2」がインストールされていることが確認できます。

$ docker-compose version

Docker Compose version v2.10.0