- 1 1. Introducción
- 2 2. Requisitos previos y preparación
- 3 3. Installing Docker
- 4 4. Permisos de usuario y ejecución de Docker sin sudo
- 5 5. Verificación del Arranque y la Operación
- 6 6. Instalación y Uso de Docker Compose
- 6.1 6-1. Verificando la instalación de Docker Compose V2
- 6.2 6-2. Beneficios de Docker Compose
- 6.3 6-3. Estructura básica de un archivo de configuración Compose
- 6.4 6-4. Ejemplo: Configuración multi‑contenedor (Web + Base de datos)
- 6.5 6-5. Comandos de Docker Compose de uso frecuente
- 6.6 6-6. Casos de uso recomendados de Compose en desarrollo
- 7 7. Consideraciones de seguridad y operativas
- 7.1 7-1. El grupo docker tiene privilegios “prácticamente de root”
- 7.2 ● Puntos clave a tener en cuenta
- 7.3 7-2. Considerar Docker sin privilegios de root (opción avanzada)
- 7.4 7-3. Limpieza de imágenes y contenedores no utilizados
- 7.5 7-4. Evitar usar la etiqueta “latest” en producción
- 7.6 7-5. Usar imágenes base oficiales en Dockerfiles
- 7.7 7-6. Tener cuidado con la exposición de red y puertos
- 7.8 7-7. Gestión de registros durante fallos
- 8 8. Problemas comunes y solución de errores
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
dockersinsudo - 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:
- Install via the official Docker repository (Recommended)
- Use the
get.docker.cominstallation script (Quick and easy) Manually download and install Docker .deb packages (Special cases)
Instalar mediante el repositorio oficial de Docker (Recomendado)
- Usar el script de instalación
get.docker.com(Rápido y sencillo) - 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--dearmorconverts the key into binary format/etc/apt/keyrings/es la ubicación recomendada para almacenar claves en Ubuntu 22.04 y posteriores--dearmorconvierte 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 asjammyorfocal)Only the stable repository is added
$(. /etc/os-release && echo $VERSION_CODENAME)inserta automáticamente el nombre en clave correcto de Ubuntu (comojammyofocal)- 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_CODENAMEesté 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 runsinsudo - 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:
- Descarga la imagen desde Docker Hub si no está presente localmente
- Inicia un contenedor a partir de la imagen
- 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_ongarantiza que la base de datos se inicie antes que la aplicaciónvolumespersiste 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:
| Command | Description |
|---|---|
docker compose up -d | Start containers in the background |
docker compose down | Stop and remove containers and networks |
docker compose build | Build images using Dockerfile |
docker compose ps | List containers managed by Compose |
docker compose logs -f | View 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
latestno 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
- El daemon de Docker no está en ejecución :
sudo systemctl start docker - Los cambios del grupo docker no se aplicaron : Cierra sesión y vuelve a iniciarla, o ejecuta
newgrp docker - 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.


