# Instalar Docker

## Ubuntu

### Requisitos

#### Requisitos del sistema operativo

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

* Ubuntu Kinetic 22.10
* Ubuntu Jammy 22.04 (LTS)
* Ubuntu Focal 20.04 (LTS)
* Ubuntu Bionic 18.04 (LTS)

Docker Engine es compatible con `x86_64` (or `amd64`), `armhf`, `arm64` y `s390x` arquitecturas.

#### Desinstalar versiones antiguas

Las versiones anteriores de Docker tenían los nombres de `docker`, `docker.io`o `docker-engine`. Se recomienda desinstalar cualquier versión anterior antes de intentar instalar una nueva versión:

<pre><code><strong>$ sudo apt-get remove docker docker-engine docker.io containerd runc
</strong></code></pre>

Está bien si `apt-get`informa que ninguno de estos paquetes está instalado.

Las imágenes, los contenedores, los volúmenes y las redes almacenados `/var/lib/docker/`no se eliminan automáticamente cuando desinstala Docker. Si se desea iniciar con una instalación limpia y se prefiere la eliminación de los datos existentes, se recomienda revisar la sección [de desinstalación de Docker Engine .](https://docs.docker.com/engine/install/ubuntu/#uninstall-docker-engine)

### Métodos de instalación

Se puede instalar Docker Engine de diversas maneras, dependiendo de las necesidades particulares del usuario:

* Docker Engine viene incluido con [Docker Desktop para Linux](https://docs.docker.com/desktop/install/linux-install/) . Esta es la forma más fácil y rápida de empezar.
* También se puede configurar e instalar Docker Engine desde el [repositorio ](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository)[de Docker`apt`](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository).
* La instalación debe realizarse de manera [manual](https://docs.docker.com/engine/install/ubuntu/#install-from-a-package), y también es necesario administrar las actualizaciones de forma manual.
* Uso de [scripts de conveniencia](https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script). Solo recomendado para entornos de prueba y desarrollo.

#### Instalar usando el repositorio  <a href="#install-using-the-repository" id="install-using-the-repository"></a>

Antes de instalar Docker Engine por primera vez en una nueva máquina host, es necesario configurar el repositorio de Docker. Posteriormente, se tiene la opción de instalar y actualizar Docker directamente desde el repositorio correspondiente.

**Configurar el repositorio**

1. Actualizar el `apt`índice de paquetes e instalar paquetes para permitir `apt`el uso de un repositorio a través de HTTPS:

   ```docker
   $ sudo apt-get update

   $ sudo apt-get install \
       ca-certificates \
       curl \
       gnupg \
       lsb-release
   ```
2. Agregar la clave GPG oficial de Docker:

   ```docker
   $ sudo mkdir -m 0755 -p /etc/apt/keyrings
   $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
   ```
3. Usar el siguiente comando para configurar el repositorio:

   ```docker
   $ echo \
     "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
     $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
   ```

**Instalar Docker Engine**

1. Actualizar el `apt`índice del paquete:

   ```
   $ sudo apt-get update
   ```

   **¿Se recibe un error de GPG cuando se ejecuta `apt-get update`?**

   El [umask](https://en.wikipedia.org/wiki/Umask) predeterminado puede estar configurado incorrectamente, lo que impide la detección del archivo de clave pública del repositorio. Se sugiere intentar otorgar permisos de lectura al archivo de clave pública de Docker antes de actualizar el índice del paquete:

   ```
    $ sudo chmod a+r /etc/apt/keyrings/docker.gpg
    $ sudo apt-get update
   ```
2. Instalar Docker Engine, containerd y Docker Compose.
   1. Para instalar la **última versión**, ejecutar:

      ```docker
       $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      ```
   2. Para instalar una **versión específica** de Docker Engine, se deberá iniciar por enumerar las versiones disponibles en el repositorio:

      ```
      # List the available versions:
      $ apt-cache madison docker-ce | awk '{ print $3 }'

      5:20.10.16~3-0~ubuntu-jammy
      5:20.10.15~3-0~ubuntu-jammy
      5:20.10.14~3-0~ubuntu-jammy
      5:20.10.13~3-0~ubuntu-jammy
      ```

      Seleccionar la versión deseada e instalar:

      ```
      $ VERSION_STRING=5:20.10.13~3-0~ubuntu-jammy
      $ sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
      ```
3. Verificar que la instalación de Docker Engine sea exitosa ejecutando la `hello-world`imagen:

   ```
   $ sudo docker run hello-world
   ```

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

Ahora se ha instalado e iniciado con éxito Docker Engine.&#x20;

El grupo de usuarios de`docker`existe, pero no contiene usuarios, por lo que se debe usar `sudo` para ejecutar los comandos de Docker. Continuar con [la instalación posterior de Linux](https://docs.docker.com/engine/install/linux-postinstall/) para permitir que los usuarios sin privilegios ejecuten los comandos de Docker y para otros pasos de configuración opcionales.

**Actualizar Docker Engine**

Para llevar a cabo la actualización de Docker Engine, se deben seguir las [instrucciones de instalación](https://docs.docker.com/engine/install/ubuntu/#install-docker-engine) y elegir la nueva versión que se desea instalar.

#### Instalar desde un paquete

Si no se puede usar `apt`el repositorio de Docker para instalar Docker Engine, se puede descargar el `deb`archivo para su versión e instalarlo manualmente. Es necesario descargar un nuevo archivo cada vez que se desee actualizar Docker Engine.

1. Ir a [`https://download.docker.com/linux/ubuntu/dists/`](https://download.docker.com/linux/ubuntu/dists/)
2. Seleccionar la versión de Ubuntu en la lista.
3. Vaya a `pool/stable/`y seleccione la arquitectura aplicable ( `amd64`, `armhf`, `arm64`o `s390x`).
4. Descargar los siguientes `deb`archivos para los paquetes Docker Engine, CLI, containerd y Docker Compose:
   * `containerd.io_<version>_<arch>.deb`
   * `docker-ce_<version>_<arch>.deb`
   * `docker-ce-cli_<version>_<arch>.deb`
   * `docker-buildx-plugin_<version>_<arch>.deb`
   * `docker-compose-plugin_<version>_<arch>.deb`
5. Instalar los `.deb`paquetes. Actualizar las rutas en el siguiente ejemplo a donde descargó los paquetes de Docker.

   ```
   $ sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
     ./docker-ce_<version>_<arch>.deb \
     ./docker-ce-cli_<version>_<arch>.deb \
     ./docker-buildx-plugin_<version>_<arch>.deb \
     ./docker-compose-plugin_<version>_<arch>.deb
   ```

   El demonio Docker se inicia automáticamente.
6. Verificar que la instalación de Docker Engine sea exitosa ejecutando la `hello-world`imagen:

   ```
   $ sudo service docker start
   $ sudo docker run hello-world
   ```

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

Ahora se ha instalado e iniciado con éxito Docker Engine.&#x20;

El `docker`grupo de usuarios existe, pero no contiene usuarios, por lo que debe usarlo `sudo` para ejecutar los comandos de Docker. Continúe con [la instalación posterior de Linux](https://docs.docker.com/engine/install/linux-postinstall/) para permitir que los usuarios sin privilegios ejecuten los comandos de Docker y para otros pasos de configuración opcionales.

**Actualizar Docker Engine**

Para actualizar Docker Engine, es necesario descargar el archivo del paquete más reciente y repitir el [procedimiento de instalación](https://docs.docker.com/engine/install/ubuntu/#install-from-a-package), apuntando al nuevo archivo.

#### 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.&#x20;

La secuencia de comandos de conveniencia no se recomienda para entornos de producción, pero es útil para crear una secuencia de comandos de aprovisionamiento adaptada a sus necesidades. Consulte también los pasos [de instalación mediante el repositorio](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository) para obtener información sobre los pasos de instalación para instalar mediante el repositorio de paquetes. El código fuente del script es de código abierto y se puede encontrar en el [`docker-install`repositorio de GitHub](https://github.com/docker/docker-install) .

{% hint style="info" %}
Tip: preview script steps before running

You can run the script with the `--dry-run` option to learn what steps the script will run when invoked:

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

{% endhint %}

Este ejemplo descarga el script de <https://get.docker.com/> y lo ejecuta para instalar la última versión estable 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
<...>
```

Ahora se ha instalado e iniciado con éxito Docker Engine.&#x20;

El `docker` servicio se inicia automáticamente en las distribuciones basadas en Debian. En `RPM`distribuciones basadas, como CentOS, Fedora, RHEL o SLES, debe iniciarlo manualmente usando el comando `systemctl`o apropiado `service`. Como indica el mensaje, los usuarios que no son root no pueden ejecutar los comandos de Docker de forma predeterminada.

{% hint style="info" %}
**¿Usar Docker como un usuario sin privilegios o instalarlo en modo sin raíz?**

El script de instalación requiere `root`privilegios `sudo`para instalar y usar Docker. Si se desea otorgar acceso a Docker a usuarios que no sean root, se deben seguir los [pasos posteriores a la instalación para Linux](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user). También es posible instalar Docker sin`root`privilegios o configurado para ejecutarse en modo sin raíz. Para obtener instrucciones sobre cómo ejecutar Docker en modo sin raíz, se sugiere consultar [ejecutar el demonio de Docker como usuario no raíz (modo sin raíz)](https://docs.docker.com/engine/security/rootless/) .
{% endhint %}

**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 igual al script en `get.docker.com`, pero configura su administrador de paquetes para usar el canal de prueba del repositorio de paquetes de Docker. El canal de prueba incluye versiones estables y preliminares (versiones beta, candidatas a versión) de Docker. Se sugiere utilizar este script para obtener acceso anticipado a las nuevas versiones y evaluarlas en un entorno de prueba antes de que se publiquen como estables.

Para instalar la última versión de Docker en Linux desde el canal de prueba, ejecutar:

```
$ 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 se instaló Docker usando el script de conveniencia, se deberá actualizar Docker usando el administrador de paquetes directamente. No hay ninguna ventaja en volver a ejecutar el script de conveniencia. Volver a ejecutarlo puede causar problemas si se intenta reinstalar repositorios que ya existen en la máquina host.

## Enlaces de referencia

* <https://docs.docker.com/engine/install/ubuntu/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dojo.lkmx.io/docker/instalar-docker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
