Contenedores de carga azules representando Docker y la contenerización en Linux
| |

Introducción a Docker: conceptos y primeros pasos en Linux

Docker es la herramienta de contenedores más usada en el mundo DevOps. Si llevas tiempo en Linux y quieres dar el salto a contenedores, estás en el lugar correcto. En este post te explico qué es Docker, cómo funciona y los primeros comandos que necesitas para empezar desde cero.

¿Qué es Docker y por qué usarlo?

Docker es una plataforma de contenedores que te permite empaquetar una aplicación con todo lo que necesita para ejecutarse — código, dependencias, configuración — en una unidad portátil llamada contenedor. Puedes consultar la documentación oficial de Docker para una visión más completa.

Contenedor vs Máquina Virtual

La diferencia fundamental es que un contenedor Docker comparte el kernel del sistema operativo host, mientras que una VM tiene su propio kernel completo:

CaracterísticaContenedor DockerMáquina Virtual
ArranqueSegundosMinutos
TamañoMBGB
AislamientoProcesoSistema completo
RendimientoCasi nativoOverhead significativo
PortabilidadTotalLimitada

Conceptos clave de Docker

  • Imagen: plantilla de solo lectura que define el contenedor. Es como una foto del sistema en un momento dado.
  • Contenedor: instancia en ejecución de una imagen. Puedes tener múltiples contenedores de la misma imagen.
  • Dockerfile: archivo de texto con las instrucciones para construir una imagen.
  • Registry: repositorio de imágenes. El más conocido es Docker Hub.
  • Volumen: mecanismo para persistir datos fuera del contenedor.

Instalar Docker en Linux

Ubuntu / Debian

# Instalar dependencias
sudo apt update
sudo apt install ca-certificates curl gnupg

# Añadir la clave GPG oficial de Docker
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

# Añadir 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

# Instalar Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

# Verificar instalación
docker --version

CentOS / RHEL / Fedora

sudo dnf install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker

Ejecutar Docker sin sudo

# Añadir tu usuario al grupo docker
sudo usermod -aG docker $USER

# Aplicar el cambio sin reiniciar sesión
newgrp docker

# Verificar que funciona
docker run hello-world

Primeros pasos con Docker: comandos esenciales

Gestionar imágenes Docker

# Buscar una imagen en Docker Hub
docker search nginx

# Descargar una imagen
docker pull nginx
docker pull ubuntu:22.04

# Ver imágenes descargadas
docker images

# Eliminar una imagen
docker rmi nginx

# Eliminar imágenes sin usar
docker image prune

Ejecutar contenedores Docker

# Ejecutar un contenedor (se elimina al parar con --rm)
docker run --rm nginx

# Ejecutar en segundo plano (-d detached)
docker run -d nginx

# Ejecutar con nombre personalizado
docker run -d --name mi-nginx nginx

# Mapear puertos (host:contenedor)
docker run -d -p 8080:80 --name mi-nginx nginx

# Ejecutar con variables de entorno
docker run -d -e MYSQL_ROOT_PASSWORD=secreto mysql

# Acceder a un contenedor en ejecución
docker exec -it mi-nginx bash

Gestionar contenedores Docker

# Ver contenedores en ejecución
docker ps

# Ver todos (incluidos los parados)
docker ps -a

# Parar un contenedor
docker stop mi-nginx

# Iniciar un contenedor parado
docker start mi-nginx

# Reiniciar
docker restart mi-nginx

# Eliminar un contenedor
docker rm mi-nginx

# Eliminar todos los contenedores parados
docker container prune

# Ver logs del contenedor
docker logs mi-nginx
docker logs -f mi-nginx   # seguir logs en tiempo real

Tu primer Dockerfile

Un Dockerfile es el archivo que define cómo construir tu propia imagen Docker. Aquí un ejemplo para una app Node.js sencilla:

# Dockerfile

# Imagen base
FROM node:18-alpine

# Directorio de trabajo dentro del contenedor
WORKDIR /app

# Copiar package.json e instalar dependencias
COPY package*.json ./
RUN npm install

# Copiar el resto del código
COPY . .

# Puerto que expone el contenedor
EXPOSE 3000

# Comando que se ejecuta al arrancar el contenedor
CMD ["node", "index.js"]
# Construir la imagen desde el Dockerfile
docker build -t mi-app:1.0 .

# Ejecutar la imagen que acabas de construir
docker run -d -p 3000:3000 --name mi-app mi-app:1.0

Instrucciones más usadas en Dockerfile

InstrucciónQué hace
FROMImagen base de la que partes
WORKDIRDirectorio de trabajo dentro del contenedor
COPYCopia archivos del host al contenedor
RUNEjecuta comandos durante la construcción
ENVDefine variables de entorno
EXPOSEDocumenta el puerto que usa el contenedor
CMDComando por defecto al arrancar
ENTRYPOINTComando fijo, no se puede sobreescribir

Limpieza del sistema Docker

# Ver cuánto espacio usa Docker
docker system df

# Limpiar todo lo que no se usa (contenedores, imágenes, redes)
docker system prune

# Limpieza total incluyendo volúmenes
docker system prune -a --volumes

Conclusión

Docker es una herramienta que cambia la forma de trabajar con aplicaciones en Linux. Una vez que entiendes la diferencia entre imagen y contenedor, y aprendes los comandos básicos, todo lo demás fluye. Antes de seguir con Docker, te recomiendo tener claro el post sobre permisos en Linux — los volúmenes de Docker tienen mucho que ver con eso.

En el próximo post veremos Docker vs Podman: cuál usar en 2026. ¿Tienes dudas sobre Docker? Déjalas en los comentarios.

¡No te pierdas los próximos posts!

¡No hacemos spam! Lee nuestra política de privacidad para obtener más información.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *