CentOS8にDockerをインストールしたときにはまったことのメモ ~ubuntuイメージの起動まで~

CentOS8にDockerをイントールするときにはまった時のメモです。まずは目の前で起きたことと対応について書きますが、内容的な根拠とかは追記したいと思います。

CentOS8でDockerを動かす

1. リポジトリの追加

dnfコマンドでインストールするにあたりリポジトリを追加します。

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

2. Dockerのインストールでエラー発生

ここでdnfコマンドでDockerをインストールすればスルスル・・・といけるはずだったんですが。

dnf install -y --nobest docker-ce docker-ce-cli

下記の通りパッケージがらみで問題が発生しました。

[root@localhost kizawa]# dnf install -y --nobest docker-ce docker-ce-cli
メタデータの期限切れの最終確認: 0:07:04 時間前の 2021年11月23日 10時26分56秒 に実施しました。
パッケージ docker-ce-cli-1:20.10.11-3.el8.x86_64 は既にインストールされています。
エラー:
問題: パッケージ docker-ce-3:19.03.13-3.el8.x86_64 には containerd.io >= 1.2.2-3 が必要ですが、どのプロバイダーからもインストールできません
- パッケージ containerd.io-1.3.7-3.1.el8.x86_64 は runc と競合しています。これは runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64 により提供されます
- パッケージ containerd.io-1.3.7-3.1.el8.x86_64 は runc を廃止しました。これは runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64 により提供されます

画面はこんな感じ。

3. 対策

containers.ioの1.2.2.-3が必要ですが、競合しているようです。現在のパッケージを削除して再インストールします。こちらの記事を参考にさせていただきました。

AlmaLinuxに「requires containerd.io >= 1.2.2-3, but none of the providers can be installed」が発生してdockerがインストールできない | mebee

すみませんが、自分用のメモとして打ったコマンドを記載します。元記事にはsudoコマンドで実行していますが、私はrootアカウントで実行していたので、sudoは記載していません。

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.2-3.3.el7.x86_64.rpm
dnf remove containerd.io
dnf install containerd.io-1.2.2-3.3.el7.x86_64.rpm

改めて下記コマンドを実行してインストールできました。

dnf install -y --nobest docker-ce docker-ce-cli

確認します。

docker -v

4. ubuntuのイメージを動かす

では、ubuntuのDokcerイメージをダウンロードして動かしてみます。

4.1 ubuntuのイメージをダウンロード

ubuntuの最新版を取ってきます。

 docker pull ubuntu:latest

4.2 コンテナの作成と起動

コンテナ名をubuntulastとします。(ちょっと名前は考えた方がよさそうですが)

docker run -it -d --name ubuntulast ubuntu:latest

起動します。

docker exec -it ubuntulast /bin/bash

これでubuntuのシェルに入れました。