GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat Docker na Fedoru 32 nebo 31 (a alternativy)

[[Edit]]Docker 10/20 přidal podporu pro cgroups v2 a Firewalld, takže tento článek je zastaralý. Informace o instalaci Dockeru na Fedoře najdete v oficiální dokumentaci.

Fedora 31 byla první hlavní distribucí Linuxu, která přešla na cgroup v2. Docker však nepodporuje cgroup v2, takže nebude fungovat na nejnovější verzi Fedory. Tento článek vysvětluje vaše možnosti a jak nainstalovat Docker na Fedoru 31, pokud se vám nelíbí alternativy. [[Edit] Toto bylo původně pro Fedoru 31, ale vše v tomto článku platí i pro Fedoru 32; Pro Fedoru 32 neexistuje žádné úložiště Docker CE, ale místo něj používáme úložiště Fedora 31.

Řídicí skupina (Control group) je funkce linuxového jádra, která organizuje procesy hierarchicky a distribuuje systémové prostředky řízeným a konfigurovatelným způsobem podél hierarchie . Group Leader v2 se poprvé objevil v linuxovém jádře 4.5 a na rozdíl od v1 má pouze jedinou hierarchii procesů a rozlišuje mezi procesy, nikoli vlákny . Doporučuji přečíst si tento příspěvek o Fedoře 31 a kontrolní skupině v2.

Docker přestal fungovat od doby, kdy Fedora 31 (a Fedora 32) přešla na cgroups v2. Tato chyba se například vyskytuje v mém systému Fedora 31, když se pokouším spustit kontejner pomocí Docker:

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.

Na Fedoře 32 se mi místo toho zobrazuje tato chyba:

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

Co teď můžete dělat, když Fedora 32 a 31 používají cgroups v2 a Docker přestal fungovat? Níže je uvedeno několik možností včetně řešení pro instalaci Docker CE. Jako obvykle byly všechny pokyny před zveřejněním na Linux Uprising testovány.

Možnost č. 1:Použijte Podman místo Dockeru na Fedoře 32 nebo 31

Nástroj pro správu podů (podman) je kontejnerový engine kompatibilní s cgroup v2 podporovaný RedHat, který implementuje téměř všechny příkazy rozhraní Docker CLI a ke spouštění kontejnerů a podů nevyžaduje démona. Toto je Fedora doporučená možnost.

Podman je ve výchozím nastavení nainstalován na Fedoře 32 a 31, takže pro jeho použití nemusíte nic dělat. Stačí spustit podman Místo docker , například:

podman run --rm hello-world:latest

Možnost č. 2:Přepněte na cgroup v1, nainstalujte a používejte Moby Engine nebo Docker CE na Fedoře 32 nebo 31

Přepnout na Control Group v1.

Kromě použití Podmana (možnost #1) máte možnost upgradovat svůj systém Fedora 32 nebo 31 na cgroup v1 předáním parametru jádra systemd.unified_cgroup_hierarchy=0 .

To lze provést (trvale) pomocí příkazového řádku následovně:

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

Poté restartujte systém a nyní budete mít možnost použít jeden ze dvou moby-engine (zahrnuje Docker CLI a Docker Engine) nebo Docker CE.

Pokud budete chtít později tuto změnu vrátit zpět, předejte parametr jádra systemd.unified_cgroup_hierarchy bez argumentu nebo s true jako argument. Tím se znovu aktivuje používání jednotné hierarchie Cgroup (Cgroup v2), např. B.:

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

Namísto Dockeru použijte moby-engine.

Docker byl odstraněn z Fedory 32 a 31 a je nahrazen moby-engine (Oba však zatím nepodporují cgroups v2). Pokud neznáte Moby a její vztah s Dockerem, doporučuji přečíst si tento příspěvek.

Chcete-li nainstalovat moby-engine (zahrnuje Docker CLI a Docker Engine) na Fedoře 32 nebo 31, aktivujte a spusťte jeho démona, použijte:

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

Můžete také chtít, aby váš uživatel docker Seskupte je, abyste je nemuseli spouštět s oprávněními superuživatele:

sudo usermod -aG docker $(whoami)

Poté musíte restartovat systém, abyste jej mohli používat moby-engine bez práv superuživatele (např. sudo ).

Nyní můžete použít moby-engine jako Docker, např.:

docker run --rm hello-world:latest

Mohlo by se vám také líbit:LazyDocker:Nové uživatelské rozhraní Docker a Docker Compose Terminal

Ukažte mi, jak nainstalovat Docker CE na Fedoru 32 nebo 31.

Líbí se mi moby-engine , Docker Engine Community nepodporuje cgroup v2, takže než budete pokračovat, přepněte na cgroup v1, jak je popsáno výše.

Pokud chcete nainstalovat Docker CE, odeberte moby-engine pokud jste jej dříve nainstalovali:

sudo dnf remove moby-engine

Nyní můžete přidat úložiště Docker CE Fedora:

  • Pro Fedoru 31:
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

  • Pro Fedoru 32 (pro Fedoru 32 neexistuje žádné úložiště Docker CE, takže používáme úložiště Fedory 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

Nyní můžete nainstalovat Docker CE na Fedoru 32 i 31 (tato verze bude také nainstalována docker-ce-cli a containerd.io ), aktivujte a spusťte jeho démona:

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

Můžete také chtít, aby váš uživatel docker skupinu, takže nemusíte spouštět Docker s oprávněními superuživatele:

sudo usermod -aG docker $(whoami)

Poté musíte restartovat systém, abyste mohli používat Docker bez práv superuživatele (např. sudo ).

Další krok pro Fedora 32:Oprava sítě v kontejnerech Docker use (zde – zde je zmíněno, že ping na jakýkoli cíl z kontejneru Docker funguje pod Fedora 32, ale připojení TCP / UDP nefungují, ale ping nefungoval ani mně):

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

Další zdroje (kromě těch, které již byly uvedeny v článku):

  • 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/ (německy)


Cent OS
  1. Jak nainstalovat Docker ve Fedoře [Výukový program pro začátečníky]

  2. Jak nainstalovat Python 3.5 na CentOS/RHEL a Fedoru

  3. Jak nainstalovat a používat Docker v Ubuntu 20.04

  1. Jak nainstalovat a nakonfigurovat docker na Debian 11

  2. Jak nainstalovat a nakonfigurovat Ansible na Fedoře 35

  3. Jak nainstalovat Python 2 a Python 3 na Fedoru 35

  1. Jak nainstalovat a používat Docker na CentOS 7

  2. Jak nainstalovat a nakonfigurovat Mariadb ve Fedoře 35

  3. Jak nainstalovat a používat Podman ve Fedoře 34/35