Guía Rápida para Instalar y Configurar Docker en Linux

14 de abril de 20256 min de lectura
Guía Rápida para Instalar y Configurar Docker en Linux

Aprende a instalar, configurar y utilizar Docker en sistemas Linux con comandos sencillos desde la terminal. Una guía eficiente para desarrolladores.

Introducción: Docker en Linux

Docker y Linux son una combinación perfecta. Al contrario que en Windows, donde Docker necesita una capa adicional de virtualización (como vimos en nuestro artículo sobre Docker en Windows), en Linux los contenedores pueden ejecutarse de forma nativa, lo que ofrece mejor rendimiento y menor sobrecarga del sistema.

En este artículo, te mostraré cómo instalar Docker en las distribuciones Linux más populares, configurarlo correctamente y empezar a trabajar con contenedores desde la terminal. La meta es que puedas tener Docker funcionando en cuestión de minutos.

Instalación de Docker en diferentes distribuciones

Ubuntu/Debian

La instalación en Ubuntu y Debian es prácticamente idéntica. Estos comandos funcionan en Ubuntu 20.04, 22.04, 24.04 y Debian 11, 12.

# 1. Actualizar el índice de paquetes
sudo apt update
 
# 2. Instalar paquetes necesarios
sudo apt install -y ca-certificates curl gnupg lsb-release
 
# 3. Añadir la clave GPG oficial de Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
 
# 4. Configurar el repositorio
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
 
# 5. Actualizar de nuevo e instalar Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Para Debian, solo necesitas reemplazar ubuntu por debian en las URLs.

Fedora/RHEL/CentOS/Rocky Linux

Para distribuciones basadas en Red Hat, el proceso es similar:

# 1. Instalar el paquete yum-utils
sudo dnf install -y yum-utils
 
# 2. Añadir el repositorio de Docker
sudo yum-config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
 
# 3. Instalar Docker
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Para RHEL/CentOS/Rocky Linux, reemplaza fedora en la URL del repositorio por centos.

Arch Linux

En Arch Linux, Docker está disponible directamente en los repositorios oficiales:

sudo pacman -Syu
sudo pacman -S docker

Configuración post-instalación

1. Iniciar y habilitar el servicio de Docker

# Iniciar Docker
sudo systemctl start docker
 
# Configurar Docker para que inicie con el sistema
sudo systemctl enable docker
 
# Verificar que Docker esté funcionando
sudo docker run hello-world

2. Añadir tu usuario al grupo docker

Para poder ejecutar Docker sin necesidad de sudo:

# Crear el grupo docker (probablemente ya exista)
sudo groupadd docker
 
# Añadir tu usuario al grupo
sudo usermod -aG docker $USER
 
# Aplicar los cambios (necesitarás cerrar sesión y volver a iniciarla)
# O alternativamente:
newgrp docker

3. Configurar el daemon de Docker

Para personalizar la configuración de Docker, puedes editar el archivo /etc/docker/daemon.json (similar a como lo hacemos en Windows con el archivo daemon.json):

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

Añade la configuración deseada. Por ejemplo:

{
  "data-root": "/ruta/personalizada/docker",
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "default-address-pools": [
    {"base":"172.17.0.0/16","size":24}
  ],
  "registry-mirrors": ["https://registry-mirror.example.com"]
}

Después de modificar la configuración, reinicia Docker:

sudo systemctl restart docker

Comandos esenciales de Docker

Los comandos básicos son iguales a los que utilizamos en Windows, lo que hace que Docker sea una herramienta muy portable entre sistemas operativos.

Gestión de imágenes

# Buscar imágenes en Docker Hub
docker search nginx
 
# Descargar una imagen
docker pull nginx:latest
 
# Listar imágenes locales
docker images
 
# Eliminar una imagen
docker rmi nginx:latest

Gestión de contenedores

# Crear y ejecutar un contenedor
docker run -d --name mi-nginx -p 8080:80 nginx
 
# Listar contenedores en ejecución
docker ps
 
# Listar todos los contenedores (incluyendo los detenidos)
docker ps -a
 
# Detener un contenedor
docker stop mi-nginx
 
# Iniciar un contenedor
docker start mi-nginx
 
# Ver logs de un contenedor
docker logs mi-nginx
 
# Ejecutar un comando dentro de un contenedor
docker exec -it mi-nginx bash
 
# Eliminar un contenedor
docker rm mi-nginx

Redes y volúmenes

# Crear una red
docker network create mi-red
 
# Listar redes
docker network ls
 
# Crear un volumen
docker volume create mi-volumen
 
# Listar volúmenes
docker volume ls
 
# Usar un volumen en un contenedor
docker run -d --name mi-nginx -v mi-volumen:/usr/share/nginx/html nginx

Usando Docker Compose

Docker Compose facilita la gestión de aplicaciones multi-contenedor. Viene incluido en las instalaciones recientes de Docker.

Crea un archivo docker-compose.yml:

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: webdata
    volumes:
      - db_data:/var/lib/mysql
 
volumes:
  db_data:

Comandos básicos:

# Iniciar los servicios
docker compose up -d
 
# Ver logs
docker compose logs
 
# Detener los servicios
docker compose down
 
# Detener y eliminar volúmenes
docker compose down -v

Consejos de seguridad y rendimiento

Limitar recursos de los contenedores

# Limitar CPU y memoria
docker run -d --name mi-nginx --memory="512m" --cpus="1.0" nginx

Mantener Docker actualizado

# Ubuntu/Debian
sudo apt update && sudo apt upgrade
 
# Fedora/RHEL
sudo dnf update

Escanear vulnerabilidades en imágenes

# Instalar Trivy (escáner de vulnerabilidades)
# Para Ubuntu/Debian
sudo apt install trivy
 
# Escanear una imagen
trivy image nginx:latest

Solución de problemas comunes

El servicio de Docker no inicia

# Verificar el estado
sudo systemctl status docker
 
# Ver logs
sudo journalctl -u docker.service

Problemas de permisos

Si obtienes errores de "permission denied" al intentar conectarte al socket de Docker:

# Verificar pertenencia al grupo docker
groups $USER
 
# Si no estás en el grupo, añadirte de nuevo
sudo usermod -aG docker $USER

Limpiar espacio en disco

Con el tiempo, Docker puede consumir mucho espacio en disco. Para limpiarlo:

# Eliminar contenedores detenidos, redes no utilizadas, imágenes sin usar y caché de construcción
docker system prune -a
 
# Para incluir también los volúmenes sin usar (¡ten cuidado!)
docker system prune -a --volumes

Comparación con Windows y macOS

A diferencia de Windows y macOS donde Docker utiliza una máquina virtual para ejecutar los contenedores, en Linux:

  • Los contenedores se ejecutan de forma nativa (mejor rendimiento)
  • No hay límites arbitrarios de memoria o CPU
  • No se necesita Docker Desktop (ahorrando recursos y evitando licencias comerciales)
  • Mejor integración con el sistema anfitrión

Esta ventaja hace que Linux sea la plataforma preferida para Docker en entornos de producción.

Conclusión

Docker en Linux ofrece la experiencia más pura y eficiente para trabajar con contenedores. La instalación es sencilla, y una vez configurado correctamente, podrás aprovechar toda la potencia de la contenerización en tus proyectos.

Si vienes de Windows o macOS, notarás una mejora significativa en rendimiento y en la simplicidad de la configuración. Y lo mejor es que los comandos y conceptos son exactamente los mismos, por lo que tu conocimiento es transferible entre plataformas.

¿Ya utilizas Docker en Linux? ¿Has notado la diferencia respecto a otras plataformas? Comparte tu experiencia en los comentarios.

Recursos adicionales

Compartir este artículo

Última actualización: 14 de abril de 2025

Si te ha gustado este artículo, no dudes en compartirlo con tus colegas o dejar un comentario.