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

Instalar Docker Engine en Debian

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

Prerrequisitos

Limitaciones del cortafuegos (firewall)

Warning

Antes de instalar Docker, asegúrate de considerar las siguientes implicaciones de seguridad e incompatibilidades del cortafuegos.

  • Si utilizas ufw o firewalld para gestionar la configuración del cortafuegos, ten en cuenta que cuando expones puertos de contenedores utilizando Docker, estos puertos omiten las reglas del cortafuegos. Para obtener más información, consulta Docker y ufw.
  • Docker solo es compatible con iptables-nft e iptables-legacy. Las reglas de cortafuegos creadas con nft no son compatibles en un sistema con Docker instalado. Asegúrate de que los conjuntos de reglas de cortafuegos que utilices se creen con iptables o ip6tables, y de añadirlos a la cadena DOCKER-USER. Consulta Filtrado de paquetes y cortafuegos.

Requisitos del sistema operativo

Para instalar Docker Engine, necesitas una de estas versiones de Debian:

  • Debian Trixie 13 (estable)
  • Debian Bookworm 12 (oldstable)
  • Debian Bullseye 11 (oldoldstable)

Docker Engine para Debian es compatible con las arquitecturas x86_64 (o amd64), armhf (arm/v7), arm64 y ppc64le (ppc64el).

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.

Los paquetes no oficiales a desinstalar son:

  • docker.io
  • docker-compose
  • docker-doc
  • podman-docker

Además, Docker Engine depende de containerd y runc. Docker Engine agrupa estas dependencias en un solo paquete: containerd.io. Si has instalado containerd o runc previamente, desinstálalos para evitar conflictos con las versiones agrupadas con Docker Engine.

Ejecuta el siguiente comando para desinstalar todos los paquetes conflictivos:

$ sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)

Es posible que apt 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. Si deseas comenzar con una instalación limpia y prefieres borrar los datos existentes, consulta la sección desinstalar Docker Engine.

Métodos de instalación

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

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

Instalar utilizando el repositorio apt

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

  1. Configura el repositorio apt de Docker.

    # Añade la clave GPG oficial de Docker:
    sudo apt update
    sudo apt install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    # Añade el repositorio a las fuentes de Apt:
    sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
    Types: deb
    URIs: https://download.docker.com/linux/debian
    Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
    Components: stable
    Architectures: $(dpkg --print-architecture)
    Signed-By: /etc/apt/keyrings/docker.asc
    EOF
    
    sudo apt update
    Note

    Si utilizas Debian testing o una distribución derivada como Kali Linux, es posible que debas sustituir la parte de este comando que se espera que imprima el nombre en clave de la versión:

    $(. /etc/os-release && echo "$VERSION_CODENAME")
    

    Reemplaza esta parte con el nombre en clave de la versión de Debian correspondiente, como trixie.

  2. Instala los paquetes de Docker.

    Para instalar la última versión, ejecuta:

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

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

    $ apt list --all-versions docker-ce
    
    docker-ce/bookworm 5:29.5.1-1~debian.12~bookworm <arch>
    docker-ce/bookworm 5:29.5.0-1~debian.12~bookworm <arch>
    ...
    

    Selecciona la versión deseada e instala:

    $ VERSION_STRING=5:29.5.1-1~debian.12~bookworm
    $ sudo apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
    
    Note

    Después de la instalación, verifica que Docker se esté ejecutando:

    $ sudo systemctl status docker
    

    Si Docker no se está ejecutando, inícialo manualmente:

    $ sudo systemctl start 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 el paso 2 de las instrucciones de instalación, eligiendo la nueva versión que deseas instalar.

Instalar desde un paquete

Si no puedes utilizar el repositorio apt de Docker para instalar Docker Engine, puedes descargar el archivo .deb 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/debian/dists/.

  2. Selecciona tu versión de Debian en la lista.

  3. Dirígete a pool/stable/ y selecciona la arquitectura correspondiente (amd64, armhf, arm64 o s390x).

  4. Descarga los siguientes archivos deb para los paquetes de Docker Engine, CLI, containerd y Docker Compose:

    • containerd.io_<versión>_<arq>.deb
    • docker-ce_<versión>_<arq>.deb
    • docker-ce-cli_<versión>_<arq>.deb
    • docker-buildx-plugin_<versión>_<arq>.deb
    • docker-compose-plugin_<versión>_<arq>.deb
  5. Instala los paquetes .deb. Actualiza las rutas en el siguiente ejemplo por las ubicaciones donde descargaste los paquetes de Docker.

    $ sudo dpkg -i ./containerd.io_<versión>_<arq>.deb \
      ./docker-ce_<versión>_<arq>.deb \
      ./docker-ce-cli_<versión>_<arq>.deb \
      ./docker-buildx-plugin_<versión>_<arq>.deb \
      ./docker-compose-plugin_<versión>_<arq>.deb
    
    Note

    Después de la instalación, verifica que Docker se esté ejecutando:

    $ sudo systemctl status docker
    

    Si Docker no se está ejecutando, inícialo manualmente:

    $ sudo systemctl start docker
    
  6. 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, apuntando 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 apt purge 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
    
  3. Elimina la lista de fuentes y los llaveros (keyrings):

    $ sudo rm /etc/apt/sources.list.d/docker.sources
    $ sudo rm /etc/apt/keyrings/docker.asc
    

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

Próximos pasos