Cómo instalar Docker en Ubuntu: Guía completa para principiantes (Método oficial)

目次

1. Introducción

Al configurar un entorno de desarrollo en Ubuntu, cada vez es más frecuente encontrarse pensando “por ahora instalemos Docker”. Aplicaciones web, procesamiento por lotes, bases de datos de prueba, middleware de prueba… Si instalas todo esto manualmente cada vez, se consume una enorme cantidad de tiempo y esfuerzo solo para preparar el entorno.

Es aquí donde la tecnología de virtualización mediante contenedores Docker resulta extremadamente útil. Con Docker puedes gestionar no solo la aplicación en sí, sino también todas las bibliotecas y configuraciones necesarias como una “imagen”. Una vez Docker está instalado en Ubuntu, puedes fácilmente:

  • Lanzar un nuevo entorno de desarrollo en minutos
  • Garantizar que todos los miembros del equipo reproduzcan el comportamiento en el mismo entorno
  • Recrear localmente una configuración similar a producción con facilidad

Estos beneficios se pueden obtener con un esfuerzo mínimo.

Por otro lado, para quienes usan Docker por primera vez, existen muchos puntos de tropiezo comunes:

  • No saber cuál procedimiento de instalación es realmente correcto
  • No entender la diferencia entre el repositorio predeterminado de Ubuntu y el repositorio oficial de Docker
  • Encontrarse con errores de permisos por confusión sobre cuándo usar sudo

Cuando buscas “ubuntu install docker”, encontrarás numerosos artículos que enumeran largas secuencias de comandos, pero a menudo no explican por qué esos pasos son necesarios o qué constituye una instalación completa.

1-1. Objetivo de este artículo

Este artículo está dirigido a lectores que desean instalar Docker en Ubuntu y cubre los siguientes puntos clave:

  • El procedimiento actualmente más común para instalar Docker en Ubuntu
  • Un método de instalación más manejable usando el repositorio oficial
  • Cómo ejecutar el comando docker sin sudo
  • Verificación post‑instalación y comandos básicos esenciales
  • Una introducción a herramientas de uso frecuente como Docker Compose

En lugar de simplemente listar comandos, esta guía explica por qué cada paso es necesario, ayudándote a mantener tu entorno más fácilmente en el futuro.

1-2. Público objetivo y requisitos previos

Este artículo está pensado para lectores que:

  • Comprenden operaciones básicas de Ubuntu (abrir una terminal, usar el comando apt, etc.)
  • Son desarrolladores o ingenieros en formación que prueban Docker por primera vez
  • Están considerando migrar entornos de prueba existentes a contenedores

No se requiere conocimiento avanzado de administración de Linux. Mientras te sientas cómodo escribiendo comandos en una terminal, esta guía será suficiente.

1-3. Estructura del artículo y cómo leerlo

Este artículo se desarrolla en el siguiente orden:

  • Verificación de requisitos previos
  • Métodos de instalación (repositorio oficial / basado en script)
  • Configuración de permisos y verificación
  • Instalación de Docker Compose
  • Solución de problemas y pasos siguientes

Puedes leer el artículo de principio a fin, o si Docker ya está instalado, enfocarte únicamente en las secciones de “Permisos” o “Compose”.

2. Requisitos previos y preparación

Instalar Docker en sí es relativamente sencillo, pero según la versión de Ubuntu o el entorno existente, hay varios puntos que vale la pena revisar con antelación. Esta sección resume los requisitos y preparativos necesarios para una instalación sin contratiempos.

2-1. Versiones de Ubuntu compatibles

Docker funciona en muchas versiones de Ubuntu, pero las siguientes versiones LTS son las más utilizadas:

  • Ubuntu 22.04 LTS (Recomendado)
  • Ubuntu 20.04 LTS
  • Ubuntu 24.04 LTS (Más reciente)

Las versiones LTS (Long Term Support) ofrecen estabilidad a largo plazo, lo que las hace ideales para mantener entornos de desarrollo basados en Docker.

Las versiones no LTS (como la 23.10) también pueden usarse, pero en entornos profesionales se prefieren generalmente las versiones LTS.

2-2. Paquetes de Docker preinstalados

Ubuntu’s default repository includes a package called docker.io. However, this is not the official Docker package provided by Docker Inc., and updates tend to lag behind. Therefore, installing Docker from the official repository is strongly recommended.

Ubuntu’s repositorio predeterminado incluye un paquete llamado docker.io. Sin embargo, este no es el paquete oficial de Docker proporcionado por Docker Inc., y las actualizaciones suelen retrasarse. Por lo tanto, se recomienda encarecidamente instalar Docker desde el repositorio oficial.

First, check and remove any existing Docker-related packages if necessary:

Primero, verifica y elimina cualquier paquete relacionado con Docker si es necesario:

sudo apt remove docker docker.io containerd runc

If the message indicates that nothing is installed, no action is required.

Si el mensaje indica que no hay nada instalado, no se requiere ninguna acción.

2-3. Updating APT and Installing Required Packages

Antes de agregar el repositorio oficial de Docker, actualiza APT e instala las herramientas necesarias:

sudo apt update
sudo apt install -y ca-certificates curl gnupg

These tools are required to add Docker’s GPG key and repository securely.

Estas herramientas son necesarias para agregar la clave GPG de Docker y el repositorio de forma segura.

2-4. Verifying Administrator Privileges (sudo)

Docker installation requires sudo privileges. If your account does not have sudo access, switch to an administrator account or request permission.

La instalación de Docker requiere privilegios sudo. Si tu cuenta no tiene acceso sudo, cambia a una cuenta de administrador o solicita permiso.

You can verify sudo access with the following command:

Puedes verificar el acceso sudo con el siguiente comando:

sudo -v

If you are prompted for a password and the command succeeds, you are ready to proceed.

Si se te solicita una contraseña y el comando se ejecuta correctamente, estás listo para continuar.

2-5. Checking Network Connectivity

Installing Docker requires access to external repositories, so an active internet connection is mandatory. In corporate or proxy environments, GPG key retrieval may fail due to access restrictions.

Instalar Docker requiere acceso a repositorios externos, por lo que una conexión a internet activa es obligatoria. En entornos corporativos o con proxy, la obtención de la clave GPG puede fallar debido a restricciones de acceso.

In such cases, consult your network administrator regarding proxy settings or allowlist configurations.

En esos casos, consulta a tu administrador de red sobre la configuración del proxy o las listas de permitidos.

2-6. Choosing the Installation Method

There are three main ways to install Docker:

Hay tres formas principales de instalar Docker:

  1. Install via the official Docker repository (Recommended)
  2. Use the get.docker.com installation script (Quick and easy)
  3. Manually download and install Docker .deb packages (Special cases)

  4. Instalar mediante el repositorio oficial de Docker (Recomendado)

  5. Usar el script de instalación get.docker.com (Rápido y sencillo)
  6. Descargar e instalar manualmente paquetes .deb de Docker (Casos especiales)

This article focuses primarily on the official repository method, which is the most common and easiest to maintain.

Este artículo se centra principalmente en el método del repositorio oficial, que es el más común y fácil de mantener.

3. Installing Docker

Now let’s install Docker on Ubuntu. Although multiple installation methods exist, this guide focuses on the official Docker repository method, which is the most reliable and widely used in production environments.

Ahora instalemos Docker en Ubuntu. Aunque existen varios métodos de instalación, esta guía se centra en el método del repositorio oficial de Docker, que es el más fiable y ampliamente usado en entornos de producción.

This method allows stable upgrades via apt upgrade, making it ideal for long-term use.

Este método permite actualizaciones estables mediante apt upgrade, lo que lo hace ideal para uso a largo plazo.

3-1. Adding the Official Docker Repository (Recommended)

First, register the official GPG key provided by Docker and add Docker’s repository to APT.
Once this is configured correctly, you can avoid accidentally installing the outdated docker.io package from Ubuntu’s default repository.

Primero, registra la clave GPG oficial proporcionada por Docker y agrega el repositorio de Docker a APT.
Una vez configurado correctamente, puedes evitar instalar accidentalmente el paquete desactualizado docker.io del repositorio predeterminado de Ubuntu.

3-1-1. Registering the GPG Key

sudo install -m 0755 -d /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
  • /etc/apt/keyrings/ is the recommended key storage location for Ubuntu 22.04 and later
  • --dearmor converts the key into binary format

  • /etc/apt/keyrings/ es la ubicación recomendada para almacenar claves en Ubuntu 22.04 y posteriores

  • --dearmor convierte la clave a formato binario

This step allows APT to trust the official Docker repository.

Este paso permite que APT confíe en el repositorio oficial de Docker.

3-1-2. Adding the Repository

Next, add Docker’s repository to APT’s source list.

A continuación, agrega el repositorio de Docker a la lista de fuentes de APT.

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

Key points:

Puntos clave:

  • $(. /etc/os-release && echo $VERSION_CODENAME) automatically inserts the correct Ubuntu codename (such as jammy or focal )
  • Only the stable repository is added

  • $(. /etc/os-release && echo $VERSION_CODENAME) inserta automáticamente el nombre en clave correcto de Ubuntu (como jammy o focal)

  • Solo se agrega el repositorio estable

3-1-3. Updating Repository Information

After adding the repository, update the APT index.

Después de agregar el repositorio, actualiza el índice de APT.

sudo apt update

At this point, docker-ce (Docker Engine) should appear as an installable package.

En este punto, docker-ce (Docker Engine) debería aparecer como un paquete instalable.

3-2. Installing Docker Engine

Now install the main Docker packages.

Ahora instala los paquetes principales de Docker.

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

Package roles:

Roles de los paquetes:

  • docker-ce : Núcleo del motor Docker
  • docker-ce-cli : Interfaz de línea de comandos de Docker
  • containerd.io : Tiempo de ejecución de contenedores central usado por Docker
  • docker-buildx-plugin : Funciones avanzadas de compilación, como compilaciones multiplataforma
  • docker-compose-plugin : Docker Compose V2 (comando docker compose)

Después de la instalación, el daemon de Docker se inicia automáticamente.

3-3. Verificando la instalación

Comprueba el estado del runtime de Docker con el siguiente comando:

sudo systemctl status docker

Si ves active (running), Docker está funcionando correctamente.

Presiona q para salir de la vista de estado.

3-4. Opcional: Instalación mediante script para mayor comodidad

Docker también ofrece un script de instalación todo‑en‑uno.

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

Ventajas:

  • Menos comandos y configuración rápida
  • Ideal para entornos simples o desechables

Desventajas:

  • Control de versiones más difícil
  • A menudo desaconsejado para producción o uso a largo plazo

Aunque resulta cómodo para principiantes, este artículo prioriza la mantenibilidad y, por lo tanto, se centra en el método del repositorio oficial.

3-5. Notas para las últimas versiones de Ubuntu (p. ej., 24.04)

Inmediatamente después de un lanzamiento mayor de Ubuntu, el repositorio oficial de Docker puede no soportar aún la nueva versión.
En esos casos, verifica lo siguiente:

  • Que la ubicación y el formato de la clave GPG coincidan con las especificaciones actuales
  • Que VERSION_CODENAME esté oficialmente soportado
  • Que no se produzcan errores de firma durante apt update

Si el soporte se retrasa, usar temporalmente el script get.docker.com puede ser una solución práctica.

4. Permisos de usuario y ejecución de Docker sin sudo

Después de instalar Docker, quizá quieras comenzar a usar el comando docker de inmediato. Sin embargo, por defecto, debes anteponer sudo a cada comando.

Este comportamiento es intencional por razones de seguridad, pero resulta incómodo para el desarrollo diario o el aprendizaje. Para solucionarlo, puedes añadir tu usuario al grupo docker, lo que permite ejecutar los comandos de Docker sin sudo.

4-1. Por qué importa ejecutar sin sudo

En Ubuntu, el daemon de Docker (dockerd) se ejecuta con privilegios de root.
Por lo tanto, crear o eliminar contenedores mediante el comando docker normalmente requiere acceso root.

El grupo docker existe para gestionar este requisito.

  • Los usuarios de este grupo pueden acceder directamente al daemon de Docker
  • Esto permite comandos como docker run sin sudo
  • Esta configuración es casi esencial para el uso en desarrollo

Ten en cuenta que el grupo docker otorga privilegios prácticamente equivalentes a los de root, por lo que se requiere precaución en entornos compartidos.
(En escritorios personales o WSL2, generalmente no es un problema.)

4-2. Añadiendo tu usuario al grupo docker

Añade el usuario actualmente conectado al grupo docker:

sudo usermod -aG docker $USER

Este comando agrega el usuario al grupo. La opción -aG significa añadir al grupo.

4-3. Aplicando los cambios

Los cambios de pertenencia al grupo se hacen efectivos después de cerrar sesión y volver a iniciarla.

Para aplicar el cambio de inmediato, también puedes ejecutar:

newgrp docker

Esto inicia una nueva sesión de shell con los permisos del grupo docker aplicados.

4-4. Verificando la ejecución sin sudo

Ahora prueba Docker sin sudo:

docker run hello-world

Salida exitosa:

  • ¡Hola desde Docker!
  • La imagen se descarga y se muestra el mensaje

Si ocurre un error, revisa lo siguiente:

  • ¿Has cerrado sesión y vuelto a iniciarla después de modificar la pertenencia al grupo?
  • ¿Se está usando /usr/bin/docker?
  • ¿El daemon de Docker está en ejecución (systemctl status docker)?

4-5. Consideraciones de seguridad (Importante)

El grupo docker otorga privilegios poderosos que son efectivamente equivalentes al acceso root.

  • Lectura de archivos arbitrarios
  • Montaje de directorios del host dentro de contenedores
  • Realización de operaciones de red
  • Control a nivel de sistema mediante el socket de Docker

Esto es aceptable para sistemas personales, pero la gestión de usuarios es crítica en servidores compartidos.

En esos casos, puedes considerar Docker sin root, que se trata en secciones posteriores.

5. Verificación del Arranque y la Operación

Una vez completada la instalación de Docker y la configuración de permisos, el siguiente paso es verificar que Docker funciona correctamente.
Esta sección explica cómo comprobar el estado del servicio Docker y ejecutar contenedores de prueba.

5-1. Comprobando el Estado del Daemon de Docker

Primero, verifica que Docker se está ejecutando correctamente en segundo plano.

sudo systemctl status docker

Indicadores clave de estado:

  • active (running) → Operando normalmente
  • inactive → No está en ejecución (debe iniciarse manualmente)
  • failed → Error de configuración o dependencia

Si el estado es inactive o failed, inicia Docker con el siguiente comando:

sudo systemctl start docker

Para asegurarte de que Docker se inicie automáticamente al arrancar el SO:

sudo systemctl enable docker

5-2. Verificando la Operación con el Contenedor hello‑world

La forma más común de verificar la instalación de Docker es ejecutando la imagen oficial hello‑world.

docker run hello-world

Este comando realiza las siguientes acciones:

  1. Descarga la imagen desde Docker Hub si no está presente localmente
  2. Inicia un contenedor a partir de la imagen
  3. Muestra un mensaje de prueba y finaliza

Si tiene éxito, verás una salida similar a la siguiente:

Hello from Docker!
This message shows that your installation appears to be working correctly.

Si aparece este mensaje, Docker está instalado y funciona correctamente.

5-3. Probando Comandos Básicos de Docker

Una vez confirmada la operación básica, prueba algunos comandos de Docker de uso frecuente.

5-3-1. Listando Imágenes de Docker

docker images

Esto muestra una lista de imágenes descargadas localmente. Si aparece hello‑world, todo funciona como se espera.

5-3-2. Comprobando Contenedores en Ejecución

docker ps

Este comando enumera los contenedores que están ejecutándose actualmente.
(El contenedor hello‑world finaliza inmediatamente y normalmente no aparecerá.)

Para mostrar también los contenedores detenidos:

docker ps -a

5-3-3. Ejecutando un Ejemplo con una Imagen Oficial

Para probar un servidor web Nginx sencillo:

docker run -d -p 8080:80 nginx
  • -d → Ejecutar en segundo plano
  • -p → Mapear el puerto 8080 del host al puerto 80 del contenedor

Abre http://localhost:8080 en tu navegador para ver la página predeterminada de Nginx.

5-4. Deteniendo y Eliminando Contenedores

Puedes detener un contenedor en ejecución con el siguiente comando:

docker stop <container-id>

Para eliminar un contenedor:

docker rm <container-id>

Para eliminar imágenes no usadas:

docker rmi <image-id>

Recuerda que las dependencias siguen el orden contenedor → imagen → volumen, así que elimínalas con cuidado.

5-5. Causas Comunes de Errores

● Errores de Permisos

Got permission denied while trying to connect to the Docker daemon socket
→ El usuario no está añadido al grupo docker

● Daemon de Docker No Está Ejecutándose

Cannot connect to the Docker daemon at unix:///var/run/docker.sock
→ Inicia Docker con systemctl start docker

● Problemas de Red que Impiden la Descarga de Imágenes

→ Verifica la configuración del proxy, DNS o restricciones de red

● Paquete Legacy docker.io Aún Instalado

→ Desinstálalo por completo y reinstala Docker desde el repositorio oficial

6. Instalación y Uso de Docker Compose

Una herramienta esencial para trabajar con Docker a gran escala es Docker Compose.
Las aplicaciones web modernas a menudo constan de varios componentes como bases de datos, cachés, workers y servidores web. Gestionar cada uno de ellos individualmente con comandos docker run rápidamente se vuelve poco práctico.

Docker Compose te permite definir múltiples configuraciones de contenedores en un solo archivo y gestionarlas conjuntamente, convirtiéndose en una de las herramientas más usadas en el desarrollo real.

6-1. Verificando la instalación de Docker Compose V2

Al instalar Docker desde el repositorio oficial, Docker Compose se instala automáticamente como un plugin.

Verifique la instalación con el siguiente comando:

docker compose version

Si la instalación es correcta, debería ver una salida similar a:

Docker Compose version v2.x.x

Si aparece un error como docker: 'compose' is not a docker command, instale el plugin manualmente:

sudo apt install docker-compose-plugin

6-2. Beneficios de Docker Compose

Las principales ventajas de Docker Compose incluyen:

  • Gestión unificada de múltiples contenedores (iniciar, detener, reiniciar)
  • Configuración como código, garantizando entornos reproducibles
  • Compartir fácilmente configuraciones de aplicaciones, API y bases de datos
  • Lanzar entornos de desarrollo con un solo docker compose up

Esto hace que Docker Compose sea casi indispensable para el desarrollo de aplicaciones.

6-3. Estructura básica de un archivo de configuración Compose

Docker Compose utiliza un archivo llamado docker-compose.yml (o compose.yaml) para definir los servicios.
Como ejemplo mínimo, cree una configuración sencilla que inicie Nginx.

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

Ejecute el siguiente comando en el directorio que contiene el archivo:

docker compose up -d

Nginx se iniciará en segundo plano. Acceda a http://localhost:8080 en su navegador para confirmar.

6-4. Ejemplo: Configuración multi‑contenedor (Web + Base de datos)

El verdadero poder de Compose se evidencia al gestionar varios contenedores simultáneamente.
Por ejemplo, ejecutar una aplicación web junto con MySQL puede configurarse de la siguiente manera:

services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db-data:/var/lib/mysql

volumes:
  db-data:

Explicación:

  • depends_on garantiza que la base de datos se inicie antes que la aplicación
  • volumes persiste los datos de la base de datos
  • Múltiples servicios se gestionan dentro de un único archivo YAML

Este es un patrón muy práctico para entornos de desarrollo.

6-5. Comandos de Docker Compose de uso frecuente

Estos comandos son útiles de memorizar:

CommandDescription
docker compose up -dStart containers in the background
docker compose downStop and remove containers and networks
docker compose buildBuild images using Dockerfile
docker compose psList containers managed by Compose
docker compose logs -fView logs (optionally per service)

Usar Compose le permite recrear entornos idénticos de forma repetida, lo que lo hace ideal para el trabajo en equipo.

6-6. Casos de uso recomendados de Compose en desarrollo

  • Configuración local con un solo comando
  • Pruebas en entornos cercanos a producción
  • Lanzamiento de servicios combinados como bases de datos, cachés y colas de mensajes
  • Persistencia de datos mediante volúmenes
  • Gestión de configuración con variables de entorno en .env
  • Soporte a arquitecturas de microservicios complejas

Una vez que se sienta cómodo con Docker y Compose, el tiempo de configuración del entorno se reduce drásticamente, mejorando significativamente la eficiencia del desarrollo.

7. Consideraciones de seguridad y operativas

Docker es una herramienta extremadamente poderosa y cómoda, pero “estar containerizado” no implica automáticamente “estar seguro”.
Al usar Docker de forma regular en Ubuntu, existen varios puntos importantes de seguridad y operatividad que debe comprender.

Esta sección organiza el conocimiento esencial para operar Docker de manera segura y estable, de forma comprensible incluso para principiantes.

7-1. El grupo docker tiene privilegios “prácticamente de root”

El grupo docker configurado anteriormente otorga privilegios muy fuertes.
Los usuarios que pertenecen al grupo docker pueden operar el sistema host a través del socket de Docker, lo que equivale efectivamente a acceso de nivel root.

● Puntos clave a tener en cuenta

  • No añada usuarios arbitrarios al grupo docker en servidores compartidos
  • Comprenda las implicaciones, no solo la comodidad de “no requerir sudo”
  • En organizaciones con políticas de seguridad estrictas, puede ser necesario contar con la aprobación del administrador

Esto rara vez es un problema en máquinas Ubuntu personales o PC de desarrollo, pero se requiere un juicio cuidadoso en servidores de producción.

7-2. Considerar Docker sin privilegios de root (opción avanzada)

Docker ofrece una característica llamada modo sin privilegios de root,
que permite que el daemon de Docker se ejecute bajo una cuenta de usuario normal en lugar de root.

Ventajas:

  • Reduce significativamente el riesgo de privilegios del SO anfitrión
  • Permite un uso más seguro de Docker en entornos con requisitos de seguridad estrictos

Desventajas:

  • Algunas funciones de red están restringidas
  • La configuración es más compleja para principiantes
  • El comportamiento puede diferir del Docker estándar

El modo sin privilegios de root no es necesario para la mayoría de los casos de uso en desarrollo,
pero puede ser una opción viable en entornos empresariales o con requisitos de cumplimiento.

7-3. Limpieza de imágenes y contenedores no utilizados

Con el tiempo, Docker puede consumir una gran cantidad de espacio en disco sin que lo notes.
Los contenedores, imágenes y volúmenes no utilizados pueden acumularse y superar fácilmente los 100 GB.

● Comandos para eliminar recursos no utilizados

Eliminar imágenes no utilizadas

docker image prune

Eliminar contenedores y redes juntos

docker system prune

Limpieza agresiva (usar con precaución)

docker system prune -a

La opción -a elimina todas las imágenes no utilizadas, así que úsela con cuidado.

7-4. Evitar usar la etiqueta “latest” en producción

Aunque etiquetas como nginx:latest son convenientes durante el desarrollo, no se recomiendan para uso en producción.

Razones:

  • La versión exacta detrás de latest no está garantizada
  • Actualizaciones inesperadas pueden causar fallos en tiempo de ejecución
  • La pérdida de reproducibilidad conduce a implementaciones inestables

Enfoque recomendado: fijar versiones explícitamente

Ejemplo:

image: nginx:1.25

Versionar explícitamente es una regla fundamental para entornos de producción.

7-5. Usar imágenes base oficiales en Dockerfiles

Al crear Dockerfiles, sigue estas directrices:

  • Preferir imágenes oficiales (imágenes de biblioteca)
  • Evitar imágenes mantenidas por autores desconocidos o no confiables
  • Al usar imágenes ligeras de SO como Alpine, verifica el estado de soporte de vulnerabilidades

Las imágenes no confiables pueden contener malware.
Incluso en entornos de desarrollo, evítelas siempre que sea posible.

7-6. Tener cuidado con la exposición de red y puertos

Cuando los contenedores exponen puertos en el SO anfitrión,
pueden volverse accesibles desde fuera del sistema.

Precauciones:

  • Evitar mapeos innecesarios -p 80:80
  • Para uso local, enlazar solo a localhost, por ejemplo -p 127.0.0.1:8080:80
  • Combinar con configuraciones de firewall como UFW
  • Para producción, usar un proxy inverso (como Nginx) para mayor seguridad

La gestión de puertos es especialmente crítica en servidores Ubuntu VPS o basados en la nube.

7-7. Gestión de registros durante fallos

Los registros de Docker pueden verse con el siguiente comando:

docker logs <container-name>

Grandes volúmenes de registros pueden consumir espacio en disco rápidamente, por lo que considere configurar controladores de registro y rotación de registros.

8. Problemas comunes y solución de errores

Aunque Docker es una herramienta poderosa, pueden ocurrir errores inesperados en Ubuntu debido a diferencias de entorno o configuraciones incorrectas.
Esta sección resume problemas comunes y sus soluciones, desde nivel principiante hasta intermedio.

8-1. No se puede conectar al daemon de Docker

● Mensaje de error

Cannot connect to the Docker daemon at unix:///var/run/docker.sock.

● Causas y soluciones

  1. El daemon de Docker no está en ejecución : sudo systemctl start docker
  2. Los cambios del grupo docker no se aplicaron : Cierra sesión y vuelve a iniciarla, o ejecuta newgrp docker
  3. Problema de permisos con /var/run/docker.sock : Asegúrate de que el usuario pertenezca al grupo docker

8-2. Errores de “Permiso denegado”

● Error típico

Got permission denied while trying to connect to the Docker daemon socket

● Solución

La causa es casi siempre la falta de configuración del grupo docker.

sudo usermod -aG docker $USER

Luego cierre sesión y vuelva a iniciarla.

8-3. Errores de GPG al añadir el repositorio APT

● Ejemplos de error

NO_PUBKEY XXXXXXXX

o

The following signatures couldn't be verified

● Causas y soluciones

  • La clave GPG no se registró correctamente
  • curl falló debido a restricciones de red

Vuelve a registrar la clave con:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
 | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Luego ejecuta sudo apt update nuevamente.

8-4. Conflictos de asignación de puertos

● Ejemplo de error

Bind for 0.0.0.0:80 failed: port is already allocated.

● Causa

  • El puerto ya está siendo usado por otro proceso en el host
  • Otro contenedor Docker está utilizando el mismo puerto

● Soluciones

Comprueba qué proceso está usando el puerto:

sudo lsof -i -P -n | grep :80

Revisa los contenedores en ejecución:

docker ps

Cambia la asignación de puertos:

-p 8080:80

8-5. Fallos al descargar imágenes

● Causas comunes

  • Restricciones de red (entornos corporativos)
  • Problemas de configuración DNS
  • Acceso bloqueado a Docker Hub

● Soluciones

  • Cambiar servidores DNS (p. ej., 1.1.1.1 o 8.8.8.8)
  • Verificar la configuración del proxy
  • Usar una VPN si el entorno lo requiere

8-6. Errores por agotamiento de espacio en disco

● Mensaje típico

no space left on device

● Resolución

Eliminar recursos no utilizados:

docker system prune -a

Revisar imágenes, contenedores y volúmenes:

docker images
docker ps -a
docker volume ls

El agotamiento de espacio en disco es uno de los problemas operativos más comunes en Docker.

年収訴求