GNU/Linux >> Linux の 問題 >  >> Cent OS

Fedora 32 または 31 (および代替) に Docker をインストールする方法

[[編集]]Docker 10/20 は cgroups v2 と Firewalld のサポートを追加したため、この記事は古くなっています。 Fedora に Docker をインストールする方法については、公式ドキュメントを参照してください。

Fedora 31 は、cgroup v2 に切り替えた最初の主要な Linux ディストリビューションです。ただし、Docker は cgroup v2 をサポートしていないため、Fedora の最新バージョンでは動作しません。この記事では、Fedora 31 に Docker をインストールするオプションと、他の方法が気に入らない場合の方法について説明します。 [[編集] これはもともと Fedora 31 用でしたが、この記事の内容はすべて Fedora 32 にも当てはまります。 Fedora 32 用の Docker CE リポジトリはありませんが、代わりに Fedora 31 リポジトリを使用しています。

コントロール グループ (コントロール グループ) は、プロセスを階層的に編成し、階層に沿って制御および構成可能な方法でシステム リソースを分散する Linux カーネル機能です。 . Group Leader v2 は Linux カーネル 4.5 で初めて登場し、v1 とは対照的に 単一のプロセス階層しかなく、スレッドではなくプロセスを区別します . Fedora 31 とコントロール グループ v2 に関するこの投稿を読むことをお勧めします。

Fedora 31 (および Fedora 32) が cgroups v2 に切り替わったため、Docker は機能しなくなりました。たとえば、Docker でコンテナを実行しようとすると、Fedora 31 システムで次のエラーが発生します:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "process_linux.go:297: applying cgroup configuration for process caused "open /sys/fs/cgroup/docker/cpuset.cpus.effective: no such file or directory"": unknown.

Fedora 32 では、代わりに次のエラーが表示されます:

docker: Error response from daemon: cgroups: cgroup mountpoint does not exist: unknown.

Fedora 32 と 31 が cgroups v2 を使用し、Docker が機能しなくなった今、何ができるでしょうか?以下は、Docker CE をインストールするための回避策を含むいくつかのオプションです。いつものように、すべての手順は Linux Uprising で公開される前にテストされました。

オプション # 1:Fedora 32 または 31 で Docker の代わりに Podman を使用する

ポッド マネージャー ツール (podman) は、RedHat がサポートする cgroup v2 互換のコンテナー エンジンであり、ほぼすべての Docker CLI コマンドを実装し、コンテナーとポッドを実行するためにデーモンを必要としません。これは Fedora の推奨オプションです。

Podman はデフォルトで Fedora 32 および 31 にインストールされているため、使用するために何もする必要はありません。 podman を実行するだけです docker の代わりに 、例:

podman run --rm hello-world:latest

オプション # 2:cgroup v1 に切り替え、Moby Engine または Docker CE を Fedora 32 または 31 にインストールして使用する

コントロール グループ v1 に切り替えます。

Podman (オプション # 1) の使用に加えて、カーネル パラメーター systemd.unified_cgroup_hierarchy=0 を渡すことで、Fedora 32 または 31 システムを cgroup v1 にアップグレードするオプションがあります。 .

これは、次のようにコマンドラインから (永続的に) 行うことができます:

sudo dnf install grubby
sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"

その後、システムを再起動すると、2 つの moby-engine のいずれかを使用するオプションが表示されます。 (Docker CLI と Docker Engine を含む) または Docker CE。

後でこの変更を元に戻したい場合は、カーネル パラメータ systemd.unified_cgroup_hierarchy を渡します。 引数なしまたは true あり 引数として。これにより、均一な Cgroup 階層 (Cgroup v2) の使用が再び有効になります。 B .:

sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy"

Docker の代わりに moby-engine を使用します。

Docker は Fedora 32 および 31 から削除され、moby-engine に置き換えられています。 (ただし、どちらもまだ cgroups v2 をサポートしていません)。 Moby とその Docker との関係に慣れていない場合は、この投稿を読むことをお勧めします。

moby-engine をインストールするには (Docker CLI と Docker Engine を含む) Fedora 32 または 31 で、そのデーモンをアクティブ化して開始するには、次を使用します:

sudo dnf install moby-engine
sudo systemctl enable --now docker

ユーザーに docker を許可することもできます。 グループ化して、スーパーユーザー権限で実行する必要がないようにします:

sudo usermod -aG docker $(whoami)

その後、使用するにはシステムを再起動する必要があります moby-engine スーパーユーザー権限なし (例:sudo ).

moby-engine を使用できるようになりました Docker のように、例:

docker run --rm hello-world:latest

こちらもお勧め:LazyDocker:新しい Docker および Docker Compose ターミナル UI

Fedora 32 または 31 に Docker CE をインストールする方法を教えてください。

moby-engineを好きに 、Docker Engine Community は cgroup v2 をサポートしていないため、続行する前に上記のように cgroup v1 に切り替えてください。

Docker CE をインストールする場合は、moby-engine を削除してください 以前にインストールした場合:

sudo dnf remove moby-engine

これで、Docker CE Fedora リポジトリを追加できます:

  • Fedora 31 の場合:
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

  • Fedora 32 の場合 (Fedora 32 用の Docker CE リポジトリがないため、Fedora 31 リポジトリを使用しています):
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo sed -i 's/$releasever/31/g' /etc/yum.repos.d/docker-ce.repo

Fedora 32 と 31 の両方に Docker CE をインストールできるようになりました (これは docker-ce-cli にもインストールされます)。 と containerd.io )、そのデーモンをアクティブ化して開始します:

sudo dnf install docker-ce
sudo systemctl enable --now docker

ユーザーに docker を許可することもできます スーパーユーザー権限で Docker を実行する必要がないようにします:

sudo usermod -aG docker $(whoami)

その後、スーパーユーザー権限なしで Docker を使用するには、システムを再起動する必要があります (例:sudo ).

Fedora 32 の追加手順:Docker コンテナでネットワークを修復する 使用 (ここから – これは、Docker コンテナーからの任意のターゲットへの ping が Fedora 32 で機能することを示していますが、TCP / UDP 接続は機能しませんが、ping も機能しませんでした):

firewall-cmd --permanent --zone=trusted --add-interface=docker0
firewall-cmd --reload

追加のソース (記事で既にリンクされているもの以外):

  • https://fedoraproject.org/wiki/Common_F31_bugs#Other_software_issues
  • https://docs.docker.com/install/linux/docker-ce/fedora/
  • https://kofler.info/docker-unter-centos-8-und-fedora-31-installieren/ (ドイツ語)


Cent OS
  1. CentOS/RHELおよびFedoraにPython3.5をインストールする方法

  2. Ubuntu20.04にDockerをインストールして使用する方法

  3. Debian11にdockerをインストールして設定する方法

  1. Fedora35にAnsibleをインストールして設定する方法

  2. Python2とPython3をFedora35にインストールする方法

  3. Fedora35にMariadbをインストールして設定する方法

  1. CentOS7にDockerをインストールして使用する方法

  2. FedoraにDockerをインストールする方法[初心者向けチュートリアル]

  3. Fedora34/35にPodmanをインストールして使用する方法