Compartir comentarios
Las respuestas se generan en base a la documentación.

Instalar Docker Engine en Fedora

Para comenzar con Docker Engine en Fedora, asegúrate de que cumples con los prerrequisitos y luego sigue los pasos de instalación.

Prerrequisitos

Requisitos del sistema operativo

Para instalar Docker Engine, necesitas una versión mantenida de una de las siguientes versiones de Fedora:

  • Fedora 44
  • Fedora 43
  • Fedora 42

Desinstalar versiones anteriores

Antes de que puedas instalar Docker Engine, debes desinstalar cualquier paquete conflictivo.

Es posible que tu distribución de Linux proporcione paquetes no oficiales de Docker, los cuales pueden entrar en conflicto con los paquetes oficiales proporcionados por Docker. Debes desinstalar estos paquetes antes de instalar la versión oficial de Docker Engine.

$ sudo dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

Es posible que dnf indique que no tienes ninguno de estos paquetes instalado.

Las imágenes, contenedores, volúmenes y redes almacenados en /var/lib/docker/ no se eliminan automáticamente al desinstalar Docker.

Métodos de instalación

Puedes instalar Docker Engine de diferentes maneras, según tus necesidades:

  • Puedes configurar los repositorios de Docker e instalar desde ellos, para facilitar las tareas de instalación y actualización. Este es el enfoque recomendado.

  • Puedes descargar el paquete RPM, instalarlo manualmente y gestionar las actualizaciones de forma completamente manual. Esto resulta útil en situaciones como la instalación de Docker en sistemas aislados de la red (air-gapped) sin acceso a Internet.

  • En entornos de prueba y desarrollo, puedes utilizar scripts de conveniencia automatizados para instalar Docker.

Apache License, Versión 2.0. Consulta LICENSE para ver la licencia completa.

Instalar utilizando el repositorio rpm

Antes de instalar Docker Engine por primera vez en una nueva máquina host, debes configurar el repositorio de Docker. Después, podrás instalar y actualizar Docker desde el repositorio.

Configurar el repositorio

$ sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repo

Instalar Docker Engine

  1. Instala los paquetes de Docker.

    Para instalar la última versión, ejecuta:

    $ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

    Si se te solicita aceptar la clave GPG, verifica que la huella digital coincida con 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 y, de ser así, acéptala.

    Este comando instala Docker, pero no lo inicia. También crea un grupo docker, sin embargo, no añade ningún usuario al grupo de forma predeterminada.

    Para instalar una versión específica, comienza por listar las versiones disponibles en el repositorio:

    $ dnf list docker-ce --showduplicates | sort -r
    
    docker-ce.x86_64    3:29.5.1-1.fc41    docker-ce-stable
    docker-ce.x86_64    3:29.5.0-1.fc41    docker-ce-stable
    <...>
    

    La lista devuelta depende de qué repositorios estén habilitados y es específica para tu versión de Fedora (indicada por el sufijo .fc41 en este ejemplo).

    Instala una versión específica mediante su nombre de paquete completo, que es el nombre del paquete (docker-ce) más la cadena de versión (segunda columna), separados por un guion (-). Por ejemplo, docker-ce-3:29.5.1-1.fc41.

    Reemplaza <VERSION_STRING> con la versión deseada y luego ejecuta el siguiente comando para instalar:

    $ sudo dnf install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin
    

    Este comando instala Docker, pero no lo inicia. También crea un grupo docker, sin embargo, no añade ningún usuario al grupo de forma predeterminada.

  2. Inicia Docker Engine.

    $ sudo systemctl enable --now docker
    

    Esto configura el servicio de systemd de Docker para que se inicie automáticamente al arrancar el sistema. Si no deseas que Docker se inicie automáticamente, utiliza sudo systemctl start docker en su lugar.

    Note

    Si el servicio de Docker no se inicia y journalctl -u docker muestra failed to find iptables, apunta el comando iptables a iptables-nft utilizando alternatives y reinicia el servicio:

    $ sudo alternatives --set iptables /usr/bin/iptables-nft
    $ sudo systemctl restart docker
    
  3. Verifica que la instalación se haya realizado correctamente ejecutando la imagen hello-world:

    $ sudo docker run hello-world
    

    Este comando descarga una imagen de prueba y la ejecuta en un contenedor. Cuando el contenedor se ejecuta, imprime un mensaje de confirmación y finaliza.

Ahora has instalado e iniciado correctamente Docker Engine.

Tip

¿Recibes errores al intentar ejecutar sin root?

El grupo de usuarios docker existe pero no contiene usuarios, por lo que debes usar sudo para ejecutar los comandos de Docker. Continúa a Pasos posteriores a la instalación en Linux para que los usuarios sin privilegios puedan ejecutar comandos de Docker y para ver otros pasos de configuración opcionales.

Actualizar Docker Engine

Para actualizar Docker Engine, sigue las instrucciones de instalación eligiendo la nueva versión que deseas instalar.

Instalar desde un paquete

Si no puedes utilizar el repositorio rpm de Docker para instalar Docker Engine, puedes descargar el archivo .rpm para tu versión e instalarlo manualmente. Deberás descargar un archivo nuevo cada vez que quieras actualizar Docker Engine.

  1. Dirígete a https://download.docker.com/linux/fedora/ y elige tu versión de Fedora. Luego navega hasta x86_64/stable/Packages/ y descarga el archivo .rpm correspondiente a la versión de Docker que deseas instalar.

  2. Instala Docker Engine, cambiando la siguiente ruta por la ruta donde descargaste el paquete de Docker.

    $ sudo dnf install /ruta/al/paquete.rpm
    

    Docker se instala pero no se inicia. Se crea el grupo docker, pero no se añaden usuarios al grupo.

  3. Inicia Docker Engine.

    $ sudo systemctl enable --now docker
    

    Esto configura el servicio de systemd de Docker para que se inicie automáticamente al arrancar el sistema. Si no deseas que Docker se inicie automáticamente, utiliza sudo systemctl start docker en su lugar.

    Note

    Si el servicio de Docker no se inicia y journalctl -u docker muestra failed to find iptables, apunta el comando iptables a iptables-nft utilizando alternatives y reinicia el servicio:

    $ sudo alternatives --set iptables /usr/bin/iptables-nft
    $ sudo systemctl restart docker
    
  4. Verifica que la instalación se haya realizado correctamente ejecutando la imagen hello-world:

    $ sudo docker run hello-world
    

    Este comando descarga una imagen de prueba y la ejecuta en un contenedor. Cuando el contenedor se ejecuta, imprime un mensaje de confirmación y finaliza.

Ahora has instalado e iniciado correctamente Docker Engine.

Tip

¿Recibes errores al intentar ejecutar sin root?

El grupo de usuarios docker existe pero no contiene usuarios, por lo que debes usar sudo para ejecutar los comandos de Docker. Continúa a Pasos posteriores a la instalación en Linux para que los usuarios sin privilegios puedan ejecutar comandos de Docker y para ver otros pasos de configuración opcionales.

Actualizar Docker Engine

Para actualizar Docker Engine, descarga los archivos de paquete más recientes y repite el procedimiento de instalación, utilizando dnf upgrade en lugar de dnf install, y apunta a los nuevos archivos.

Instalar usando el script de conveniencia

Docker proporciona un script de conveniencia en https://get.docker.com/ para instalar Docker en entornos de desarrollo de forma no interactiva. El script de conveniencia no se recomienda para entornos de producción, pero resulta útil para crear un script de aprovisionamiento adaptado a tus necesidades. Consulta también los pasos de instalar usando el repositorio para conocer los pasos de instalación utilizando el repositorio de paquetes. El código fuente del script es de código abierto y puedes encontrarlo en el repositorio docker-install en GitHub.

Examina siempre los scripts descargados de internet antes de ejecutarlos localmente. Antes de la instalación, familiarízate con los posibles riesgos y limitaciones del script de conveniencia:

  • El script requiere privilegios de root o sudo para ejecutarse.
  • El script intenta detectar tu distribución y versión de Linux y configurar tu sistema de gestión de paquetes por ti.
  • El script no te deja personalizar la mayoría de los parámetros de instalación.
  • El script instala dependencias y recomendaciones sin solicitar confirmación. Esto puede instalar una gran cantidad de paquetes, dependiendo de la configuración de tu máquina host.
  • De forma predeterminada, el script instala la versión estable más reciente de Docker, containerd y runc. Al usar este script para aprovisionar una máquina, esto puede dar lugar a actualizaciones inesperadas de versiones principales de Docker. Prueba siempre las actualizaciones en un entorno de pruebas antes de desplegarlas en tus sistemas de producción.
  • El script no está diseñado para actualizar una instalación existente de Docker. Al usar el script para actualizar una instalación existente, es posible que las dependencias no se actualicen a la versión esperada, lo que daría como resultado versiones desactualizadas.
Tip

Visualiza previamente los pasos del script antes de ejecutarlo. Puedes ejecutar el script con la opción --dry-run para conocer qué pasos ejecutará el script cuando sea invocado:

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh ./get-docker.sh --dry-run

Este ejemplo descarga el script desde https://get.docker.com/ y lo ejecuta para instalar la versión estable más reciente de Docker en Linux:

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>

Has instalado e iniciado Docker Engine de forma correcta. El servicio docker se inicia automáticamente en distribuciones basadas en Debian. En distribuciones basadas en RPM, como CentOS, Fedora o RHEL, debes iniciarlo manualmente usando el comando systemctl o service adecuado. Como indica el mensaje, los usuarios que no sean root no pueden ejecutar comandos de Docker de forma predeterminada.

¿Usar Docker como usuario sin privilegios o instalarlo en modo rootless?

El script de instalación requiere privilegios de root o sudo para instalar y usar Docker. Si quieres conceder acceso a Docker a usuarios que no sean root, consulta los pasos posteriores a la instalación para Linux. También puedes instalar Docker sin privilegios de root o configurarlo para ejecutarse en modo rootless. Para obtener instrucciones sobre cómo ejecutar Docker en modo rootless, consulta ejecutar el demonio de Docker como usuario que no es root (modo rootless).

Instalar versiones preliminares

Docker también proporciona un script de conveniencia en https://test.docker.com/ para instalar versiones preliminares de Docker en Linux. Este script es idéntico al de get.docker.com, pero configura tu gestor de paquetes para usar el canal de prueba (test) del repositorio de paquetes de Docker. El canal de prueba incluye tanto versiones estables como preliminares (versiones beta, candidatas a lanzamiento) de Docker. Usa este script para obtener acceso anticipado a los próximos lanzamientos y evaluarlos en un entorno de pruebas antes de que se publiquen como estables.

Para instalar la versión más reciente de Docker en Linux desde el canal de prueba, ejecuta:

$ curl -fsSL https://test.docker.com -o test-docker.sh
$ sudo sh test-docker.sh

Actualizar Docker después de usar el script de conveniencia

Si instalaste Docker usando el script de conveniencia, debes actualizar Docker directamente usando tu gestor de paquetes. No tiene ninguna ventaja volver a ejecutar el script de conveniencia. Volver a ejecutarlo puede causar problemas si intenta volver a instalar repositorios que ya existen en la máquina host.

Desinstalar Docker Engine

  1. Desinstala los paquetes de Docker Engine, CLI, containerd y Docker Compose:

    $ sudo dnf remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
    
  2. Las imágenes, contenedores, volúmenes o archivos de configuración personalizados en tu host no se eliminan automáticamente. Para eliminar todas las imágenes, contenedores y volúmenes:

    $ sudo rm -rf /var/lib/docker
    $ sudo rm -rf /var/lib/containerd
    

Debes eliminar manualmente cualquier archivo de configuración que hayas editado.

Próximos pasos