Kitabı oku: «Aprender Docker, un enfoque práctico», sayfa 4
2.2.2. Instalación en Ubuntu utilizando el script oficial
Esta es la forma más sencilla de instalar Docker Engine en un entorno de desarrollo. Solo tenemos que ejecutar el siguiente comando:

Lo que estamos haciendo con este comando es utilizar la herramienta curl
para descargar un script de la URL https://get.docker.com y, una vez que se ha descargado, lo ejecutamos con el intérprete de comandos sh
. Observe que es necesario ejecutarlo con privilegios de root
.
El script se encarga de detectar la distribución y la versión de Linux desde la que estamos realizando la descarga. Instala todas las dependencias, recomendaciones y paquetes que necesite sin solicitar ninguna confirmación al usuario. Es una forma rápida y sencilla de instalar Docker Engine en un sistema operativo Linux, pero tenga en cuenta que no se recomienda su uso para entornos de producción.
Una vez que haya finalizado la instalación, es necesario realizar una serie de pasos que se describen más adelante, en el apartado 2.2.4.
2.2.3. Instalación en Ubuntu desde los repositorios oficiales de Docker
La opción que vamos a utilizar es la que nos recomiendan desde la página oficial: la de instalar Docker Engine haciendo uso de los repositorios oficiales. A continuación, vamos a describir los pasos necesarios para instalar Docker Engine en Ubuntu Server 20.04 LTS sobre una arquitectura de 64 bits de tipo x86_64/amd64
.
Configuración del repositorio oficial de Docker
En primer lugar, actualizamos la lista de paquetes de nuestro sistema:

Una vez que hemos actualizado la lista de paquetes, instalamos los siguientes:
apt-transport-https
: permite a la herramienta apt
acceder y descargar paquetes de los repositorios utilizando el protocolo HTTPS.
ca-certificates
: contiene los certificados de las autoridades más comunes de certificación.
curl
: es una herramienta que posibilita transferir datos a través de una URL. Se puede utilizar para simular las peticiones de un usuario desde un navegador web, pero desde la línea de comandos.
gnupg
: se trata de una herramienta para la comunicación y almacenamiento de datos de forma segura. Puede utilizarse para cifrar datos y crear firmas digitales.
lsb-release
: constituye una herramienta que permite identificar la distribución Linux que se está utilizando.

Añadimos a nuestro sistema la clave GPG pública del repositorio oficial de Docker. Este paso es necesario para poder añadir un repositorio externo a nuestro sistema y verificar las firmas de los paquetes que descargamos de ese repositorio:

En el siguiente paso, vamos a añadir el repositorio oficial de Docker a la lista de repositorios de nuestro sistema. Para hacer esto, crearemos un archivo llamado docker.list
dentro del directorio /etc/apt/sources.list.d
. Y, dentro de este archivo, añadiremos los datos del repositorio oficial de Docker, para que podamos instalar sus paquetes con la utilidad apt
.
Utilizaremos el comando lsb_release -cs
, para obtener el nombre de la distribución que estamos utilizando y poder configurar el repositorio correctamente para esta distribución. Como este ejemplo lo estamos realizando con la versión 20.04 LTS de Ubuntu Server, el nombre de la distribución que obtendremos será focal
. Tenga en cuenta que este nombre cambiará dependiendo de la versión que esté utilizando.
Otro detalle importante es que debemos indicar cuál es el canal de actualización que vamos a utilizar. Docker Engine tiene tres tipos de canales:
stable
: en este canal, se encuentran las versiones definitivas disponibles para su uso. El software se encuentra en la etapa GA (General Availability) del ciclo de vida del lanzamiento del software.
test
: en este canal, se hallan las versiones que están en una fase previa a la etapa GA (General Availability) y se encuentran preparadas para ser testeadas.
nightly
: en este canal, se sitúan las versiones que todavía no han sido liberadas y están en fase de desarrollo. Dichas versiones se crean diariamente con el estado de la rama principal del repositorio.
En nuestra instalación, seleccionaremos el canal stable
:

Después de la ejecución del comando anterior, el archivo docker.list
tendrá el siguiente contenido:

En este caso, podemos ver cómo el repositorio se ha configurado para una arquitectura de tipo amd64
, para la distribución focal
de Ubuntu y el canal stable
.
Instalación de Docker Engine
Una vez que hemos añadido el repositorio oficial de Docker, tenemos que volver a actualizar la lista de paquetes de nuestro sistema:

Ahora tenemos todo preparado para realizar la instalación de Docker Engine. Lo mínimo que necesitamos para tener instalado Docker Engine en una máquina Linux son estos dos paquetes:
docker-ce
: contiene la versión Community de Docker Engine.
containerd.io
: es el container runtime que usa Docker Engine.
De forma opcional, también podemos instalar el cliente oficial Docker CLI, que nos va a permitir interactuar con el servicio Docker daemon de Docker Engine:
docker-ce-cli
: contiene la versión Community de Docker CLI.
Aunque lo más habitual es instalar el cliente y servicio Docker daemon en la misma máquina, tenga en cuenta que los puede tener en máquinas separadas.
En nuestro caso, vamos a instalar Docker CLI y Docker Engine en la misma máquina, que será la opción más común:

En la página web oficial de Docker, puede encontrar más detalles sobre cómo realizar la instalación de Docker Engine en Ubuntu:

Comprobación de la instalación
Vamos a comprobar que la instalación se ha realizado de forma correcta ejecutando un comando que nos muestra información del cliente y del servicio Docker daemon.
Observe que vamos a ejecutar el comando como superusuario escribiendo sudo
antes del comando docker version
. Ahora explicaremos por qué lo hacemos:

Al ejecutar este comando, obtendremos una salida similar a esta:

1. Indica la versión del cliente Docker CLI.
2. Indica la versión de la API de Docker Engine que utiliza el cliente.
3. Indica la versión de Go que está utilizando el cliente.
4. Indica los siete primeros caracteres del hash SHA del commit que se ha utilizado para hacer la release de esta versión del cliente.
5. Indica la fecha de la release de esta versión del cliente.
6. Indica el sistema operativo y la arquitectura donde se está ejecutando el cliente.
7. Indica el contexto que está activo y está siendo utilizado por el cliente. Un mismo cliente puede tener configurados diferentes contextos para administrar clusters Swarm, clusters Kubernetes o nodos independientes con Docker Engine.
8. Indica que el cliente tiene activadas las características experimentales que todavía se encuentran en fase de testing.
9. Indica la versión de Docker Engine.
10. Indica la versión de la API de Docker Engine que utiliza el servidor y cuál es la mínima versión con la que puede comunicarse.
11. Indica la versión de Go que está utilizando el servidor.
12. Indica los siete primeros caracteres del hash SHA del commit que se ha utilizado para hacer la release de esta versión del servidor.
13. Indica la fecha de la release de esta versión del servidor.
14. Indica el sistema operativo y la arquitectura donde se está ejecutando el servidor.
15. Indica que el servidor tiene desactivadas las características experimentales de Docker Engine.
16. Indica la versión de containerd
y el hash SHA del commit que se está utilizando.
17. Indica la versión de runc
y el hash SHA del commit que se está utilizando.
18. Indica la versión de docker-init
y el hash SHA del commit que se está utilizando.
Si obtenemos una salida similar a la anterior, es que la instalación se ha realizado de forma correcta.
Ahora vamos a ejecutar el mismo comando, pero sin utilizar sudo
:

Deberíamos obtener una salida similar a esta:

En este caso, solo hemos obtenido información del cliente y un mensaje de error que indica que no hemos podido conectar con el servicio Docker daemon.
Cuando el cliente y el servicio Docker daemon se ejecutan en la misma máquina, se comunican con un socket de tipo UNIX que está ubicado en /var/run/docker.sock
.
Para poder hacer uso de este socket, el usuario necesita tener permisos de root
o pertenecer al grupo de usuarios del sistema docker
.
Para solucionar este problema, podemos ejecutar los comandos con sudo
o añadir a nuestro usuario al grupo de usuarios docker
, que es lo que vamos a explicar en la siguiente sección:

2.2.4. Pasos posteriores a la instalación en Linux
Una vez que hemos realizado la instalación de Docker Engine en Linux, la documentación oficial nos recomienda realizar dos pasos opcionales: la configuración del usuario con el que vamos a utilizar el cliente Docker CLI y habilitar el servicio de Docker, para que se inicie automáticamente al poner en funcionamiento el sistema.
Configuración del usuario
Si hemos instalado el cliente y el servicio Docker daemon en la misma máquina, van a utilizar por defecto un socket UNIX para comunicarse. Los únicos usuarios que pueden utilizar dicho socket son el usuario root
y los usuarios que pertenecen al grupo docker
.
Para evitar tener que escribir sudo
cada vez que vayamos a ejecutar un comando del cliente, tenemos que añadir al usuario con el que vamos a trabajar al grupo docker
.
Para añadir al usuario actual al grupo docker
, vamos a utilizar el comando usermod
:

En este ejemplo, estamos utilizando la variable de entorno $USER
, que contiene el nombre del usuario actual que está ejecutando el comando. En lugar de utilizar la variable $USER
, podemos indicar el nombre del usuario de forma explícita.
Para activar los cambios en los grupos sin tener que cerrar la sesión, podemos ejecutar el siguiente comando:

Configuración de Docker Engine para que se inicie automáticamente
El siguiente paso consiste en configurar los servicios de docker
y containerd
, para que se inicien automáticamente cuando se inicie el sistema.
En las distribuciones Debian y Ubuntu, estos servicios se configuran por defecto durante la instalación. Pero, para el resto de las distribuciones Linux, hay que configurarlo de forma manual. En estos casos, utilizaremos el comando systemctl:

2.3. Instalación de Docker Desktop en Windows 10
Docker Desktop para Windows es una aplicación que ofrece el entorno de desarrollo ideal para trabajar con contenedores Docker en Windows. Esta aplicación tiene soporte para ejecutar contenedores Linux y Windows. Más adelante, explicaremos qué diferencias existen entre ambos.
Además de la versión Community Edition (CE) de Docker Engine, también incluye otros componentes, como Docker CLI, Docker Compose, Docker Content Trust, Kubernetes y Credential Helper.
Docker Desktop para Windows 10 tiene soporte para dos tipos de backends:
Hyper-V.
WSL 2 (Windows Subsystem for Linux, version 2).
La opción recomendada es WSL 2 aunque, si queremos utilizar contenedores Windows, vamos a necesitar activar Hyper-V.
Hyper-V
Hyper-V es el hipervisor de Windows y Windows Server, que proporciona virtualización de hardware para ejecutar máquinas virtuales.
En Windows 10, solo está disponible para las versiones de 64 bits de las ediciones Pro, Enterprise y Education. No está disponible para la edición Home.
En mayo de 2020, se publicó la versión 2004 (Build 19041) de Windows 10 y fue, a partir de esta versión, cuando se añadió el soporte para múltiples hipervisores. Antes de esta versión, no era posible ejecutar las aplicaciones de virtualización de terceros, como VirtualBox y VMware, si el hipervisor Hyper-V estaba habilitado.
WSL 2
El subsistema de Windows para Linux (WSL) permite ejecutar un entorno GNU/Linux sobre un sistema operativo Windows sin tener que utilizar una máquina virtual tradicional, ni una configuración de arranque dual. Con WSL, podemos ejecutar comandos y aplicaciones Linux dentro del sistema operativo Windows.
Las principales mejoras que aporta la versión 2 de WSL frente a la versión 1 son que aumenta el rendimiento de las operaciones de entrada/salida del sistema de archivos y que utiliza su propio kernel de Linux completo, con total compatibilidad con las llamadas del sistema.
WSL 2 utiliza una máquina virtual muy ligera, que se administra y se ejecuta en segundo plano. Utiliza la arquitectura de Hyper-V, para habilitar su virtualización; por lo tanto, es necesario habilitar en las características de Windows el componente «Plataforma de máquina virtual».
WSL 2 está disponible para las versiones de Windows 10 Pro y Home.
2.3.1. Instalación de Docker Desktop utilizando WSL 2 como backend
En este apartado, vamos a explicar cómo realizar la instalación de Docker Desktop utilizando WSL 2 como backend, ya que es la opción más recomendada.
Requisitos mínimos del sistema
Vamos a necesitar una máquina que cumpla los siguientes requisitos:
Sistema operativo Windows 10 de 64 bits.
Las ediciones Home y Pro necesitan una versión igual o superior a la 2004 (Build 19041).
Las ediciones Enterprise y Education necesitan una versión igual o superior a la 1909 (Build 18363).
Es necesario tener habilitadas las siguientes características de Windows:
Subsistema de Windows para Linux.
Plataforma de máquina virtual.
Los requisitos hardware necesarios son los siguientes:
Procesador de 64 bits compatible con SLAT (Second Level Address Translation).
4 GB de memoria RAM.
Tener activado el soporte de virtualización de hardware a nivel de BIOS.
Haber instalado el paquete de actualización del kernel de Linux.
Instalación de WSL 2 en Windows 10
Antes de instalar Docker Desktop para Windows, es necesario descargar WSL. Existen dos opciones para realizar la instalación de WSL en Windows:
Instalación simplificada
Es posible realizar la instalación con un solo comando. Para poder realizar este tipo de instalación, necesitamos:
Ser miembros del programa Windows Insider.
Tener instalada una versión preview de Windows 10, con el Build 20262 o superior.
Ejecutar el comando
wsl --install
en la línea de comandos con privilegios de administrador.
Instalación manual
La instalación manual de WSL 2 requiere realizar los siguientes pasos:
Habilitar las características de Windows:
Subsistema de Windows para Linux.
Plataforma de máquina virtual.
Instalar el último paquete de actualización del kernel de Linux.
Configurar WSL 2 como la versión por defecto.
Puede encontrar una descripción más detallada del proceso de instalación de WSL en la web oficial de Microsoft:

Instalación de Docker Desktop en Windows 10
Una vez que hemos instalado WSL 2 en nuestro sistema, podemos realizar la instalación de Docker Desktop para Windows:
1. En primer lugar, tendremos que descargar y ejecutar el instalador de Docker Desktop para Windows, que está disponible desde la web oficial o desde Docker Hub.
2. El asistente de instalación nos preguntará si queremos instalar los componentes de Windows necesarios para WSL 2. Asegúrese de instalarlos.
3. Siga las instrucciones del asistente hasta finalizar el proceso de instalación.
4. Una vez que ha finalizado el proceso de instalación, Docker se inicia de forma automática y el icono de la ballena de Docker aparecerá en la barra de estado.
A continuación, se muestra una imagen del dashboard de la aplicación Docker Desktop, desde el que se pueden gestionar todos los contenedores, imágenes y volúmenes que hay en el equipo.

Figura 2.1. Dashboard de la aplicación Docker Desktop 4.0.1 para Windows.
Puede encontrar una descripción más detallada del proceso de instalación de Docker Desktop en la web oficial de Docker:

Si tiene algún problema durante la instalación de Docker Desktop, puede consultar la solución de los problemas más comunes en la web oficial:

Opciones de configuración de Docker Desktop
Para acceder a las opciones de configuración de Docker Desktop, hay que mostrar el menú contextual que aparece al pulsar el botón derecho sobre el icono de Docker de la barra de estado. Desde ahí, podemos seleccionar la opción «Settings».

Figura 2.2. Menú contextual que muestra la opción Settings, que permite configurar Docker Desktop.
Al hacer esto, nos aparecerá una ventana con las opciones de configuración de Docker Desktop, que están divididas en cinco grupos:
General.
Resources.
Docker Engine.
Experimental Features.
Kubernetes.
En una instalación básica, no es necesario modificar ninguna de las opciones de configuración. Si ha realizado la instalación de Docker Desktop utilizando WSL 2 como backend, asegúrese de que la opción «Use the WSL 2 based engine» aparece seleccionada en el apartado de configuración general.

Figura 2.3. Configuración general de la aplicación Docker Desktop 4.0.1 para Windows.
Contenedores Linux y contenedores Windows
Docker Desktop para Windows 10 nos permite trabajar con contenedores Linux y Windows. En el capítulo 1 de este libro, puede encontrar las principales diferencias que existen entre ellos.
En la instalación por defecto de Docker Desktop para Windows 10, están activados los contenedores Linux. Para trabajar con contenedores Windows, tenemos que mostrar el menú contextual que aparece al pulsar el botón derecho sobre el icono de Docker de la barra de estado. En este menú, aparecerá la opción «Switch to Windows containers».

Figura 2.4. Menú contextual que muestra la opción para seleccionar los contenedores Windows.
Para poder utilizar contenedores Windows en Windows 10, hay que tener activadas las características de Windows «Hyper-V» y «Contenedores».

Figura 2.5. Aquí se muestran las características de Windows «Hyper-V» y «Contenedores» activadas.
Comprobación de la instalación
En este apartado, vamos a mostrar qué información nos tendría que devolver el comando docker version
, dependiendo del tipo de contenedores que hayamos elegido en Docker Desktop.
Contenedores Linux

1. Indica el sistema operativo y la arquitectura donde se está ejecutando el cliente. En ese caso, el cliente se ejecuta en el sistema operativo Windows en una arquitectura amd64
.
2. Señala el sistema operativo y la arquitectura donde se está ejecutando el servicio Docker daemon. En este caso, se ejecuta en el sistema operativo Linux, en una arquitectura amd64
.
Contenedores Windows


1. Indica el sistema operativo y la arquitectura donde se está ejecutando el cliente. En ese caso, el cliente se ejecuta en el sistema operativo Windows en una arquitectura amd64
.
2. Señala el sistema operativo y la arquitectura donde se está ejecutando el servicio Docker daemon. En este caso, se ejecuta en el sistema operativo Windows en una arquitectura amd64
.