GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar Docker en Fedora 32 o 31 (y alternativas)

[[Edit]]Docker 10/20 agregó soporte para cgroups v2 y Firewalld, por lo que este artículo está desactualizado. Para obtener información sobre cómo instalar Docker en Fedora, consulte la documentación oficial.

Fedora 31 fue la primera distribución importante de Linux en cambiar a cgroup v2. Sin embargo, Docker no es compatible con cgroup v2, por lo que no funcionará en la última versión de Fedora. Este artículo explica sus opciones y cómo instalar Docker en Fedora 31 si no le gustan las alternativas. [[Editar] Esto fue originalmente para Fedora 31, pero todo en este artículo también se aplica a Fedora 32; No hay un repositorio de Docker CE para Fedora 32, pero estamos usando el repositorio de Fedora 31 en su lugar.

El grupo de control (Control group) es una característica del kernel de Linux que organiza los procesos jerárquicamente y distribuye los recursos del sistema de manera controlada y configurable a lo largo de la jerarquía . Group Leader v2 apareció por primera vez en el kernel 4.5 de Linux y, a diferencia de v1, tiene una única jerarquía de procesos y distingue entre procesos, no subprocesos . Recomiendo leer esta publicación sobre Fedora 31 y el grupo de control v2.

Docker dejó de funcionar desde que Fedora 31 (y Fedora 32) cambiaron a cgroups v2. Por ejemplo, este error ocurre en mi sistema Fedora 31 cuando intento ejecutar un contenedor con 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.

En Fedora 32 me sale este error:

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

Ahora, ¿qué puede hacer ahora que Fedora 32 y 31 usan cgroups v2 y Docker dejó de funcionar? A continuación se muestran algunas opciones, incluida una solución alternativa para instalar Docker CE. Como de costumbre, todas las instrucciones se probaron antes de publicarse en Linux Uprising.

Opción #1:Usar Podman en lugar de Docker en Fedora 32 o 31

La herramienta de administrador de pods (podman) es un motor de contenedor compatible con cgroup v2 compatible con RedHat que implementa casi todos los comandos de la CLI de Docker y no requiere un demonio para ejecutar contenedores y pods. Esta es la opción recomendada por Fedora.

Podman está instalado de forma predeterminada en Fedora 32 y 31, por lo que no tiene que hacer nada para usarlo. Solo ejecuta podman En lugar de docker , por ejemplo:

podman run --rm hello-world:latest

Opción n.° 2:cambie a cgroup v1, instale y use Moby Engine o Docker CE en Fedora 32 o 31

Cambiar al grupo de control v1.

Además de usar Podman (opción n.° 1), tiene la opción de actualizar su sistema Fedora 32 o 31 a cgroup v1 pasando el parámetro del kernel systemd.unified_cgroup_hierarchy=0 .

Esto se puede hacer (permanentemente) a través de la línea de comando de la siguiente manera:

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

Después de eso, reinicie su sistema y ahora tendrá la opción de usar uno de los dos moby-engine (incluye Docker CLI y Docker Engine) o Docker CE.

Si luego desea deshacer este cambio, pase el parámetro del kernel systemd.unified_cgroup_hierarchy sin argumento o con true como argumento. Esto reactiva el uso de la jerarquía uniforme de Cgroup (Cgroup v2), p. B.:

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

Utilice moby-engine en lugar de Docker.

Docker se eliminó de Fedora 32 y 31 y se reemplaza por moby-engine (Sin embargo, ninguno de los dos aún es compatible con cgroups v2). Si no estás familiarizado con Moby y su relación con Docker, te recomiendo leer este post.

Para instalar moby-engine (incluye Docker CLI y Docker Engine) en Fedora 32 o 31, active e inicie su daemon, use:

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

También puede querer que su usuario docker Agrupe para que no tenga que ejecutarlos con privilegios de superusuario:

sudo usermod -aG docker $(whoami)

Después de eso, debe reiniciar su sistema para poder usarlo moby-engine sin derechos de superusuario (por ejemplo, sudo ).

Ahora puede usar moby-engine como Docker, por ejemplo:

docker run --rm hello-world:latest

También te puede interesar:LazyDocker:nueva interfaz de usuario de Docker y Docker Compose Terminal

Solo muéstrame cómo instalar Docker CE en Fedora 32 o 31.

Me gusta moby-engine , Docker Engine Community no es compatible con cgroup v2, así que cambie a cgroup v1 como se describe anteriormente antes de continuar.

Si desea instalar Docker CE, elimine moby-engine si lo instalaste antes:

sudo dnf remove moby-engine

Ahora puede agregar el repositorio Docker CE Fedora:

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

  • Para Fedora 32 (no hay un repositorio de Docker CE para Fedora 32, por lo que estamos usando el repositorio de 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

Ahora puede instalar Docker CE tanto en Fedora 32 como en 31 (esto también se instalará docker-ce-cli y containerd.io ), active e inicie su daemon:

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

También puede querer que su usuario docker grupo para que no tenga que ejecutar Docker con privilegios de superusuario:

sudo usermod -aG docker $(whoami)

Después de eso, debe reiniciar su sistema para usar Docker sin derechos de superusuario (por ejemplo, sudo ).

Paso adicional para Fedora 32:Reparar red en contenedores Docker use (desde aquí, esto menciona que hacer ping a cualquier destino desde un contenedor Docker funciona en Fedora 32, pero las conexiones TCP / UDP no funcionan, pero hacer ping tampoco funcionó para mí):

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

Fuentes adicionales (además de las ya vinculadas en el artículo):

  • 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/ (alemán)


Cent OS
  1. Cómo instalar Python 3.5 en CentOS/RHEL y Fedora

  2. Cómo instalar y usar Docker en Ubuntu 20.04

  3. Cómo instalar y configurar docker en Debian 11

  4. Cómo instalar y configurar Ansible en Fedora 35

  5. Cómo instalar Python 2 y Python 3 en Fedora 35

Cómo instalar Docker en Fedora [Tutorial para principiantes]

Cómo instalar y configurar Jenkins en Fedora 35

Cómo instalar Go en Fedora 35

Cómo instalar Docker en Fedora 35

Cómo instalar Wine 5.0 en CentOS, RHEL y Fedora

Cómo instalar y usar Docker en Ubuntu 22.04