# Instalar Docker Engine en Ubuntu


Para comenzar con Docker Engine en Ubuntu, asegúrate de que [cumples con los prerrequisitos](#prerrequisitos) y luego sigue los [pasos de instalación](#metodos-de-instalacion).

## 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](/engine/network/packet-filtering-firewalls/#docker-and-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](/engine/network/packet-filtering-firewalls/).

### Requisitos del sistema operativo

Para instalar Docker Engine, necesitas la versión de 64 bits de una de estas versiones de Ubuntu:

- Ubuntu Resolute 26.04 (LTS)
- Ubuntu Questing 25.10
- Ubuntu Noble 24.04 (LTS)
- Ubuntu Jammy 22.04 (LTS)

Docker Engine para Ubuntu es compatible con las arquitecturas x86_64 (o amd64), armhf, arm64, s390x y ppc64le (ppc64el).

> [!NOTE]
>
> La instalación en distribuciones derivadas de Ubuntu, como Linux Mint, no está admitida oficialmente (aunque puede funcionar).

### 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-compose-v2`
- `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:

```console
$ sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 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](#desinstalar-docker-engine).

## Métodos de instalación

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

- Docker Engine viene agrupado con [Docker Desktop para Linux](/desktop/setup/install/linux/). Esta es la forma más fácil y rápida de comenzar.

- Configura e instala Docker Engine desde el [repositorio `apt` de Docker](#instalar-utilizando-el-repositorio-apt).

- [Instálalo manualmente](#instalar-desde-un-paquete) y gestiona las actualizaciones manualmente.

- Utiliza un [script de conveniencia](#instalar-utilizando-el-script-de-conveniencia). Recomendado únicamente para entornos de prueba y desarrollo.



Apache License, Versión 2.0. Consulta [LICENSE](https://github.com/moby/moby/blob/master/LICENSE) para ver la licencia completa.

### Instalar utilizando el repositorio `apt` {#install-using-the-repository}

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.

   ```bash
   # 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/ubuntu/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/ubuntu
   Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
   Components: stable
   Architectures: $(dpkg --print-architecture)
   Signed-By: /etc/apt/keyrings/docker.asc
   EOF

   sudo apt update
   ```

2. Instala los paquetes de Docker.

   **Última versión**



   Para instalar la última versión, ejecuta:

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

   **Versión específica**



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

   ```console
   $ apt list --all-versions docker-ce

   docker-ce/noble 5:29.5.1-1~ubuntu.24.04~noble <arch>
   docker-ce/noble 5:29.5.0-1~ubuntu.24.04~noble <arch>
   ...
   ```

   Selecciona la versión deseada e instala:

   ```console
   $ VERSION_STRING=5:29.5.1-1~ubuntu.24.04~noble
   $ 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:
     >
     > ```console
     > $ sudo systemctl status docker
     > ```
     >
     > Si Docker no se está ejecutando, inícialo manualmente:
     >
     > ```console
     > $ sudo systemctl start docker
     > ```

3. Verifica que la instalación se haya realizado correctamente ejecutando la imagen `hello-world`:

   ```console
   $ 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](/engine/install/linux-postinstall) 
> 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](#instalar-utilizando-el-repositorio-apt), 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/ubuntu/dists/`](https://download.docker.com/linux/ubuntu/dists/).

2. Selecciona tu versión de Ubuntu 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.

   ```console
   $ 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:
     >
     > ```console
     > $ sudo systemctl status docker
     > ```
     >
     > Si Docker no se está ejecutando, inícialo manualmente:
     >
     > ```console
     > $ sudo systemctl start docker
     > ```

6. Verifica que la instalación se haya realizado correctamente ejecutando la imagen `hello-world`:

   ```console
   $ 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](/engine/install/linux-postinstall) 
> 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](#instalar-desde-un-paquete), apuntando a los nuevos archivos.



### Instalar usando el script de conveniencia

Docker proporciona un script de conveniencia en
[https://get.docker.com/](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](#install-using-the-repository) 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](https://github.com/docker/docker-install).

<!-- prettier-ignore -->
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:
>
> ```console
> $ 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/](https://get.docker.com/) y lo ejecuta para instalar la
versión estable más reciente de Docker en Linux:

```console
$ 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](/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user).
> 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)](/engine/security/rootless/).

#### Instalar versiones preliminares

Docker también proporciona un script de conveniencia en
[https://test.docker.com/](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:

```console
$ 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:

   ```console
   $ 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:

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

3. Elimina la lista de fuentes y los llaveros (keyrings):

   ```console
   $ 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

- Continúa con los [Pasos posteriores a la instalación en Linux](/engine/install/ubuntu/linux-postinstall/).

