GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren Sie Docker auf Fedora 32 oder 31 (und Alternativen)

[[Bearbeiten]]Docker 10/20 hat Unterstützung für cgroups v2 und Firewalld hinzugefügt, daher ist dieser Artikel veraltet. Informationen zur Installation von Docker auf Fedora finden Sie in der offiziellen Dokumentation.

Fedora 31 war die erste große Linux-Distribution, die auf cgroup v2 umgestiegen ist. Docker unterstützt jedoch cgroup v2 nicht, daher funktioniert es nicht mit der neuesten Version von Fedora. Dieser Artikel erklärt Ihre Optionen und wie Sie Docker auf Fedora 31 installieren, wenn Ihnen die Alternativen nicht gefallen. [[Bearbeiten] Dies war ursprünglich für Fedora 31, aber alles in diesem Artikel gilt auch für Fedora 32; Es gibt kein Docker CE-Repository für Fedora 32, aber wir verwenden stattdessen das Fedora 31-Repository.

Kontrollgruppe (Control group) ist eine Linux-Kernel-Funktion, die Prozesse hierarchisch organisiert und Systemressourcen auf kontrollierte und konfigurierbare Weise entlang der Hierarchie verteilt . Group Leader v2 erschien erstmals im Linux-Kernel 4.5 und hat im Gegensatz zu v1 nur eine einzige Prozesshierarchie und unterscheidet zwischen Prozessen, nicht Threads . Ich empfehle, diesen Beitrag zu Fedora 31 und der Kontrollgruppe v2 zu lesen.

Docker funktioniert nicht mehr, seit Fedora 31 (und Fedora 32) auf cgroups v2 umgestellt haben. Dieser Fehler tritt beispielsweise auf meinem Fedora 31-System auf, wenn ich versuche, einen Container mit Docker auszuführen:

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.

Auf Fedora 32 erhalte ich stattdessen diesen Fehler:

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

Was können Sie nun tun, da Fedora 32 und 31 cgroups v2 verwenden und Docker nicht mehr funktioniert? Nachfolgend finden Sie einige Optionen, einschließlich einer Problemumgehung für die Installation von Docker CE. Wie üblich wurden alle Anleitungen getestet, bevor sie auf Linux Uprising veröffentlicht wurden.

Option Nr. 1:Verwenden Sie Podman anstelle von Docker auf Fedora 32 oder 31

Das Pod-Manager-Tool (podman) ist eine von RedHat unterstützte cgroup v2-kompatible Container-Engine, die fast alle Docker-CLI-Befehle implementiert und keinen Daemon zum Ausführen von Containern und Pods benötigt. Dies ist die von Fedora empfohlene Option.

Podman ist standardmäßig auf Fedora 32 und 31 installiert, sodass Sie nichts tun müssen, um es zu verwenden. Führen Sie einfach podman aus Statt docker , zum Beispiel:

podman run --rm hello-world:latest

Option Nr. 2:Wechseln Sie zu cgroup v1, installieren und verwenden Sie Moby Engine oder Docker CE auf Fedora 32 oder 31

Zur Kontrollgruppe v1 wechseln.

Zusätzlich zur Verwendung von Podman (Option Nr. 1) haben Sie die Möglichkeit, Ihr Fedora 32- oder 31-System auf cgroup v1 zu aktualisieren, indem Sie den Kernel-Parameter systemd.unified_cgroup_hierarchy=0 übergeben .

Dies kann (dauerhaft) über die Kommandozeile wie folgt erfolgen:

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

Starten Sie danach Ihr System neu und Sie haben nun die Möglichkeit, einen der beiden moby-engine zu verwenden (einschließlich Docker CLI und Docker Engine) oder Docker CE.

Wenn Sie diese Änderung später rückgängig machen möchten, übergeben Sie den Kernel-Parameter systemd.unified_cgroup_hierarchy ohne Argument oder mit true als Argument. Dadurch wird die Verwendung der einheitlichen Cgroup-Hierarchie (Cgroup v2) reaktiviert, z. B.:

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

Moby-Engine statt Docker verwenden.

Docker wurde aus Fedora 32 und 31 entfernt und wird durch moby-engine ersetzt (Beide unterstützen jedoch noch nicht cgroups v2). Wenn Sie mit Moby und seiner Beziehung zu Docker nicht vertraut sind, empfehle ich, diesen Beitrag zu lesen.

Um moby-engine zu installieren (beinhaltet Docker CLI und die Docker Engine) auf Fedora 32 oder 31, aktivieren und starten Sie seinen Daemon, verwenden Sie:

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

Vielleicht möchten Sie auch, dass Ihr Benutzer docker Gruppieren, damit Sie sie nicht mit Superuser-Rechten ausführen müssen:

sudo usermod -aG docker $(whoami)

Danach müssen Sie Ihr System neu starten, um es zu verwenden moby-engine ohne Superuser-Rechte (z.B. sudo ).

Sie können jetzt moby-engine verwenden wie Docker, z. B.:

docker run --rm hello-world:latest

Das könnte Ihnen auch gefallen:LazyDocker:New Docker and Docker Compose Terminal UI

Zeigen Sie mir einfach, wie man Docker CE auf Fedora 32 oder 31 installiert.

Um moby-engine zu mögen , die Docker Engine Community unterstützt cgroup v2 nicht, wechseln Sie also wie oben beschrieben zu cgroup v1, bevor Sie fortfahren.

Wenn Sie Docker CE installieren möchten, entfernen Sie moby-engine wenn Sie es zuvor installiert haben:

sudo dnf remove moby-engine

Jetzt können Sie das Docker CE Fedora-Repository hinzufügen:

  • Für Fedora 31:
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

  • Für Fedora 32 (es gibt kein Docker CE-Repository für Fedora 32, also verwenden wir das Fedora 31-Repository):
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

Jetzt können Sie Docker CE sowohl auf Fedora 32 als auch auf 31 installieren (dies wird auch docker-ce-cli installiert und containerd.io ), aktivieren und starten Sie seinen Daemon:

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

Möglicherweise möchten Sie auch, dass Ihr Benutzer docker Gruppe, damit Sie Docker nicht mit Superuser-Rechten ausführen müssen:

sudo usermod -aG docker $(whoami)

Danach müssen Sie Ihr System neu starten, um Docker ohne Superuser-Rechte nutzen zu können (z.B. sudo ).

Zusätzlicher Schritt für Fedora 32:Netzwerk in Docker-Containern reparieren use (von hier aus – dies erwähnt, dass das Ping jedes Ziels von einem Docker-Container unter Fedora 32 funktioniert, aber TCP/UDP-Verbindungen funktionieren nicht, aber Ping hat bei mir auch nicht funktioniert):

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

Weitere Quellen (zusätzlich zu den bereits im Artikel verlinkten):

  • 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/ (Deutsch)


Cent OS
  1. So installieren Sie Docker in Fedora [Anfänger-Tutorial]

  2. So installieren Sie Python 3.5 unter CentOS/RHEL und Fedora

  3. So installieren und verwenden Sie Docker in Ubuntu 20.04

  4. So installieren und konfigurieren Sie Mariadb in Fedora 35

  5. So installieren und verwenden Sie Podman in Fedora 34/35

So installieren Sie Docker in Fedora [Anfänger-Tutorial]

So installieren und konfigurieren Sie Jenkins in Fedora 35

So installieren Sie Go auf Fedora 35

So installieren Sie Docker auf Fedora 35

So installieren Sie Wine 5.0 auf CentOS, RHEL und Fedora

So installieren und verwenden Sie Docker unter Ubuntu 22.04