Docker es una popular herramienta para desarrollar y desplegar software en paquetes conocidos como contenedores. Ubuntu es una de las distribuciones de Linux más populares y es un sistema operativo bien soportado por Docker.

La instalación de Docker en Ubuntu crea una plataforma ideal para tus proyectos de desarrollo, utilizando máquinas virtuales ligeras que comparten el kernel del sistema operativo de Ubuntu. Este tutorial te ayudará a empezar explicando 4 formas de hacerlo.

Más sobre Docker

Docker ayuda a hacer que las aplicaciones sean portátiles, permitiéndote construirlas y ejecutarlas en cualquier host Docker. Una imagen de contenedor puede utilizarse sin modificaciones encualquier lugar en el que esté disponible Docker — desde tu portátil hasta la nube. Esto simplifica la experiencia del desarrollador al eliminar las diferencias entre los entornos de ejecución. El formato de contenedor también es fácil de distribuir a través de múltiples máquinas físicas, lo que te permite escalar fácilmente las aplicaciones en respuesta a la demanda cambiante.

Docker incluye todo lo que necesitas para construir y ejecutar imágenes de contenedores, ya sean de Docker Hub y otros registros públicos, o de tus propios Dockerfiles.

Preparando la Instalación de Docker en Ubuntu

Puedes instalar la última versión de Docker en las versiones de Ubuntu 18.04, 20.04, 21.10 y 22.04. Son compatibles las arquitecturas x64_64/AMD64, ARMhf, ARM64 y S390x.

Hay varias formas de instalar Docker, y tu elección dependerá de la funcionalidad que necesites y del enfoque que prefieras para la gestión de paquetes. En esta guía conocerás todas las opciones posibles.

Seleccionando un Docker Flavor

Docker en Linux era originalmente un terminal. Una instalación que funciona comprende el Motor Docker, un daemon que ejecuta sus contenedores, y la interfaz de línea de comandos (CLI) docker para interactuar con el daemon.

Docker Desktop es una forma alternativa de utilizar Docker. Inicialmente sólo estaba disponible para Windows y Mac, pero se lanzó para Linux en mayo de 2022. Docker Desktop en Ubuntu requiere un procesador AMD64 y Ubuntu 21.10 o 22.04. Ofrece una interfaz gráfica para gestionar tus contenedores, un clúster Kubernetes integrado y soporte para extensiones de terceros. Docker Desktop también te ofrece las CLIs docker y Docker Compose.

Docker Desktop se diferencia de Docker Engine en que utiliza una máquina virtual para ejecutar tus contenedores (por lo que Docker Desktop es necesario para los usuarios de Windows y MacOS). Aunque es posible utilizar ambos flavors uno al lado del otro en Ubuntu, puedes encontrar conflictos entre las versiones de la CLI de docker. Lo mejor es elegir una y ceñirse a ella. Elige Docker Engine si te sientes cómodo en tu terminal y quieres el mejor soporte y rendimiento. La VM de Docker Desktop es ligeramente más pesada, pero es la mejor opción si quieres una interfaz de usuario integrada o piensas utilizar Kubernetes.

Instalar Docker Engine en Ubuntu

Docker Engine es la forma estándar de ejecutar Docker en Ubuntu. Funciona con todas las versiones y entornos compatibles, desde una máquina local de escritorio de Ubuntu hasta tu alojamiento de nube de Ubuntu Server. Asegúrate de que estás ejecutando una versión de Ubuntu que sea 18.04 o más actualizada antes de continuar.

El motor Docker tiene 3 métodos de instalación diferentes:

  1. Un repositorio oficial de Ubuntu apt
  2. Un paquete independiente de Debian (.deb)
  3. Un script de instalación automatizada

La opción 1, el repositorio de Ubuntu apt, es la más utilizada. Añade Docker a tu lista de paquetes para que puedas instalar fácilmente futuras actualizaciones ejecutando apt upgrade. La opción 2 no admite actualizaciones automatizadas, pero es ideal para instalar Docker en sistemas sin conexión al aire. El script de instalación automatizada es el método más sencillo para empezar, pero solo está  configurado para uso de desarrollo. Docker desaconseja su uso en entornos de producción.

Utiliza el repositorio apt cuando trabajes con un sistema de producción, quieras actualizaciones fáciles o necesites utilizar el mismo mecanismo en todos los entornos.

Utiliza el script de instalación automatizada si quieres una experiencia de configuración rápida mientras experimentas con Docker en tu propia máquina.

1. Instalar Docker con el Repositorio apt

Docker publica paquetes en su propio repositorio apt. Tendrás que añadir este repositorio a tu lista de fuentes de apt, de lo contrario, tu instalación de apt no podrá encontrar los paquetes Docker.

Empieza por actualizar tu lista de paquetes existente e instalar algunas dependencias para los siguientes pasos. Las herramientas ca-certificates, curl, gnupg, y lsb_release se utilizarán para descargar los detalles correctos del repositorio Docker apt y la clave de firma para tu sistema. Aunque probablemente ya tengas estos paquetes, no está de más que te asegures de que están disponibles.

$ sudo apt update
$ sudo apt install ca-certificates curl gnupg lsb-release

A continuación, registra el llavero GPG de Docker con apt. Esto permitirá a apt validar los paquetes Docker que instales.

$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg

El comando curl descarga la clave GPG de Docker para Ubuntu, la convierte a la codificación estándar OpenGPG y la guarda en el directorio de llaveros de apt. chmod se utiliza para establecer los permisos del archivo de llaveros para que apt lo detecte de forma fiable.

Ahora puedes añadir la fuente del paquete Docker a tu sistema. Ejecuta el siguiente comando:

$ 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

Esto utiliza la sustitución del shell para detectar automáticamente la arquitectura de tu sistema, como AMD64 o ARM64, y descargar la lista de paquetes adecuada. Se verificará utilizando la clave GPG añadida anteriormente. El repositorio se añade como una nueva lista de paquetes dentro del apt /etc/apt/sources.list.d directory.

Actualiza de nuevo tus listas de paquetes para que apt sepa que los paquetes Docker existen:

$ sudo apt update

Ahora puedes utilizar el comando apt install para añadir los componentes de Docker a tu sistema. Instalarás la última versión de Docker Community Edition (CE). Hay tres paquetes que instalar:

  • docker-ce: el daemon del motor Docker
  • docker-ce-cli: la CLI de Docker con la que vas a interactuar.
  • containerd.io: el tiempo de ejecución del contenedor conocido como containerd que inicia y ejecuta tus contenedores.
$ sudo apt install docker-ce docker-ce-cli containerd.io

2. Instalar Docker con el Paquete de Debian

El paquete oficial .deb es sencillo de configurar, pero tendrás que descargar e instalar manualmente cada nueva versión. Los paquetes se alojan en un simple servidor de archivos. Primero navega a la página de notas de la versión de Docker para encontrar el último número de versión disponible, como 20.10.20. A continuación, dirígete a la página de GitHub de containerd para comprobar también su número de versión. Se verá como 1.6.8.

Ahora puedes ejecutar la siguiente secuencia de comandos para descargar el conjunto de paquetes adecuado para tu plataforma. Sustituye <DOCKER_VERSION> y <CONTAINERD_VERSION> por los números de versión actuales de Docker y containerd respectivamente.

$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-ce_<DOCKER_VERSION>~3-0~ubuntu-focal_amd64.deb -o docker-ce.deb
$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-ce-cli_<DOCKER_VERSION>~3-0~ubuntu-focal_amd64.deb -o docker-ce-cli.deb
$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/containerd.io_<CONTAINERD_VERISON>-1_amd64.deb -o containerd.deb

También puedes descargar los archivos e inspeccionar todas las versiones disponibles visitando el listado de directorios de tu versión de Ubuntu en tu navegador.

Una vez que hayas descargado los paquetes Docker CE, CLI y containerd, utiliza el siguiente comando para instalarlos:

$ sudo apt install ./docker-ce.deb ./docker-ce-cli.deb ./containerd.deb

Ajusta los nombres de los archivos si has descargado manualmente los paquetes sin utilizar el script proporcionado anteriormente.

3. Instalar Docker con el Script de Instalación

El cómodo script de Docker automatiza la instalación de todos los componentes de Docker. No es interactivo, así que puedes sentarte y esperar mientras tu sistema se prepara para ti.

Primero descarga el script:

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

Ahora ejecuta el script con privilegios de root:

$ sudo sh get-docker.sh
Executing docker install script
...

Espera a que el script se complete. Deberías ver un mensaje de confirmación mostrando que Docker está instalado.

El script está pensado para ser una solución única. No puedes personalizar lo que hace sin modificar directamente el código fuente del script. Tampoco está diseñado para realizar actualizaciones de Docker, ya que no actualizará las dependencias a sus últimas versiones.

Cómo Asegurarte de que el Motor Docker Funciona en Ubuntu

Sea cual sea el método de instalación que hayas utilizado, debes asegurarte de que todo funciona iniciando un contenedor:

$ sudo docker run hello-world

Verás que el cliente Docker extrae el hello-world:image a tu máquina, desde el repositorio Docker Hub:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:7d246653d0511db2a6b2e0436cfd0e52ac8c066000264b3ce63331ac66dca625
Status: Downloaded newer image for hello-world:latest

A continuación, se iniciará automáticamente un nuevo contenedor. La imagen de inicio «hola-mundo» está configurada para ejecutar un simple comando que emite alguna información básica sobre Docker y luego sale inmediatamente:

Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 (amd64)
 3. The Docker daemon created a new container from that image which runs the
 executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
 to your terminal.

Al ver la salida mostrada arriba, significa que Docker está listo para ser utilizado. El daemon ha extraído con éxito la imagen hello-world:latest de Docker Hub, y ha iniciado un contenedor con ella. Todo, a partir de la línea «Hello from Docker», ha sido emitido por el proceso dentro del contenedor.

Configuración de los Permisos del Motor Docker en Ubuntu

Una instalación nueva del motor Docker suele requerir privilegios de root para ejecutar los comandos de la CLI de docker. Tienes que anteponer a cada comando el prefijo sudo, lo cual es un inconveniente.

Puedes evitar este requisito añadiéndote al grupo docker después de haber instalado Docker Engine siguiendo los pasos anteriores. Este cambio opcional te da los permisos para ejecutar los comandos docker como un usuario normal, sin sudo, lo que simplifica tu experiencia en la CLI.

Asegúrate de que el grupo de usuarios docker existe:

$ sudo groupadd docker

Después, añádate a ti mismo:

$ sudo usermod -aG docker $USER

Si has ejecutado previamente algún comando de docker con sudo, tendrás que arreglar los permisos de tu directorio ~/.docker:

$ sudo chown $USER:$USER /home/$USER/.docker -R
$ sudo chmod g+rwx $HOME/.docker -R

Esto garantiza que tu propia cuenta de usuario pueda leer y escribir en los archivos del directorio.

Sal del sistema y vuelve a entrar para que tu nueva pertenencia al grupo surta efecto. Intenta ejecutar un comando docker sin sudo:

$ docker run hello-world

Este paso posterior a la instalación completa el proceso de configuración de Docker en Ubuntu. El daemon ya está configurado para iniciarse automáticamente, por lo que no tienes que configurar manualmente un servicio. Si tienes prevista una instalación avanzada, consulta el manual de usuario de Docker para obtener instrucciones sobre cómo configurar la gestión personalizada de redes, registros y almacenamiento de volúmenes.

Añadir Docker Compose a tu instalación de Ubuntu

Docker Compose es una popular herramienta complementaria de Docker que facilita el trabajo con aplicaciones que utilizan varios contenedores. Mientras que la CLI de docker sólo se dirige a un contenedor con cada comando, docker compose puede iniciar y detener varios contenedores con cada acción. Esto simplifica la gestión de sistemas en los que tienes servicios separados de frontend, backend y base de datos.

Docker Compose está ahora disponible como parte de la CLI docker. El plugin Compose V2 se incluye cuando utilizas el script de instalación oficial para instalar Docker. También está disponible en apt si utilizas ese método:

$ sudo apt install docker-compose-plugin

Como alternativa, puedes descargar el último archivo de .deb e instalarlo manualmente:

$ curl https://download.docker.com/linux/ubuntu/dists/$(lsb_release --codename | cut -f2)/pool/stable/$(dpkg --print-architecture)/docker-compose-plugin_2.6.0~ubuntu-focal_amd64.deb -o docker-compose-plugin.deb
$ sudo apt install -i ./docker-compose-plugin.deb

Comprueba que Compose funciona probando el comando docker compose version:

$ docker compose version
Docker Compose version v2.6.0

Instalación de Docker Desktop en Ubuntu

Mientras que Docker Engine se limita a una experiencia sólo de CLI, Docker Desktop ofrece una interfaz gráfica de gestión, soporte integrado para Kubernetes y extensiones opcionales de terceros que pueden ayudar a simplificar tus flujos de trabajo con contenedores. Es una gran elección cuando buscas facilidad de uso en tu propia estación de trabajo.

Para instalar Docker Desktop, instala primero algunas dependencias utilizando apt:

$ sudo apt update
$ sudo apt install ca-certificates curl gnupg lsb-release

A continuación, ejecuta el siguiente conjunto de comandos para añadir el repositorio de Docker apt. Aunque Docker Desktop no está incluido en el repositorio, los paquetes que contiene son referenciados como dependencias por el archivo Debian de Desktop.

$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
$ 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
$ sudo apt update

El comando curl descarga la clave GPG de Docker para Ubuntu, la convierte a la codificación estándar OpenGPG y la guarda en el directorio de llaveros apt. chmod se utiliza para establecer los permisos del archivo de llaveros de forma que apt lo detecte de forma fiable.

Descarga el archivo Docker Desktop Debian desde el enlace de la documentación. Esto proporcionará la última versión estable de Docker Desktop para Linux. Utiliza apt para instalar el paquete, sustituyendo el número de versión que hayas descargado:

$ sudo apt install ./docker-desktop-4.11.0-amd64.deb

Docker Desktop aparecerá ahora en tu lanzador de aplicaciones. Utiliza tu lanzador para iniciar Docker Desktop y abrir la interfaz de usuario. También podrás ejecutar los comandos docker, docker compose y kubectl en tu terminal. La aplicación también añade un menú a tu bandeja de shell que muestra el estado actual de Docker Desktop y te permite realizar algunas acciones rápidas.

Se te pedirá que aceptes un acuerdo de servicio la primera vez que ejecutes Docker Desktop. Pulsa el botón Aceptar si das tu consentimiento, y espera mientras Docker Desktop inicia su máquina virtual.

Después de unos momentos, se cargará el panel de control. Ofrece accesos directos para crear nuevos contenedores a partir de imágenes populares, evitando largos comandos de terminal.

Captura de pantalla de Docker Desktop funcionando en Ubuntu.
Docker Desktop instalado en Ubuntu.

DevKinsta: Docker Desktop para WordPress

Las soluciones especializadas construidas sobre la base de Docker proporcionan una experiencia aún más fácil para tecnologías específicas. DevKinsta es una herramienta de desarrollo local gratuita para crear temas y plugins de WordPress que utiliza Docker para aislar y proteger completamente tus sitios de WordPress. Hace que sea rápido y sencillo iniciar y personalizar un nuevo proyecto de WordPress sin tener que configurar tú mismo los servidores. Una vez que estés listo, puedes enviar directamente a la plataforma Kinsta para desplegar tu sitio en producción.

Puedes instalar DevKinsta en MacOS, Windows y Ubuntu.

Resumen

Docker es la forma en que la mayoría de los desarrolladores se inician en el uso de contenedores. Puedes instalar fácilmente Docker en tu sistema Ubuntu, ya sea como Docker Engine o como el nuevo Docker Desktop. Una vez que tengas instalado Docker, estarás totalmente equipado para construir y ejecutar contenedores, permitiéndote simplificar el desarrollo y reducir las discrepancias entre entornos.

Si estás desarrollando temas y plugins para WordPress, DevKinsta puede simplificar la creación de un entorno de desarrollo local y el despliegue de tu sitio.

James Walker

James Walker es el fundador de Heron Web, un estudio de desarrollo de software con sede en el Reino Unido que ofrece soluciones a medida para PYMES. Tiene experiencia en la entrega de software a medida utilizando flujos de trabajo de ingeniería construidos en torno a modernas metodologías DevOps. James también es escritor técnico freelance y ha escrito mucho sobre el ciclo de vida del desarrollo de software, las tendencias actuales del sector y los conceptos y tecnologías DevOps.