Docker
Docker es una plataforma para desarrollar, enviar y ejecutar aplicaciones en contenedores. Aquí tienes los comandos esenciales.
Instalación
Section titled “Instalación”# Instalar dependenciassudo apt updatesudo apt install ca-certificates curl
# Añadir clave GPG oficialsudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc
# Añadir repositorioecho "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instalar Dockersudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Añadir usuario al grupo docker (evitar sudo)sudo usermod -aG docker $USER# Instalar Dockersudo pacman -S docker docker-compose
# Añadir usuario al grupo dockersudo usermod -aG docker $USER
# Habilitar y iniciar serviciosudo systemctl enable --now dockerGestión de imágenes
Section titled “Gestión de imágenes”# Listar imágenes localesdocker images
# Descargar una imagen (pull)docker pull ubuntu:latestdocker pull nginx:alpine
# Eliminar una imagendocker rmi ubuntu:latest
# Eliminar imágenes no usadasdocker image prune
# Construir una imagen desde Dockerfiledocker build -t mi-imagen:1.0 .
# Construir con contexto y etiquetadocker build -t mi-imagen:1.0 -f Dockerfile.prod .Gestión de contenedores
Section titled “Gestión de contenedores”Crear y ejecutar
Section titled “Crear y ejecutar”# Crear y ejecutar contenedor (interactivo)docker run -it ubuntu:latest bash
# Ejecutar en segundo plano (detached)docker run -d --name mi-nginx nginx:alpine
# Ejecutar con puertos mapeadosdocker run -d -p 8080:80 --name web nginx:alpine
# Ejecutar con volumen montadodocker run -d -v /ruta/local:/ruta/container nginx:alpine
# Ejecutar con variables de entornodocker run -d -e MYSQL_ROOT_PASSWORD=secret mysql:8Gestionar contenedores
Section titled “Gestionar contenedores”# Listar contenedores en ejecucióndocker ps
# Listar todos los contenedores (incluyendo detenidos)docker ps -a
# Parar un contenedordocker stop nombre_contenedor
# Iniciar un contenedor detenidodocker start nombre_contenedor
# Reiniciar un contenedordocker restart nombre_contenedor
# Eliminar un contenedordocker rm nombre_contenedor
# Eliminar un contenedor en ejecución (forzado)docker rm -f nombre_contenedor
# Eliminar todos los contenedores detenidosdocker container pruneEjecutar comandos
Section titled “Ejecutar comandos”# Ejecutar comando en contenedor en ejecucióndocker exec -it nombre_contenedor bash
# Ejecutar comando específicodocker exec nombre_contenedor ls -la
# Ver logs de un contenedordocker logs nombre_contenedor
# Ver logs en tiempo realdocker logs -f nombre_contenedorPort mapping y volúmenes
Section titled “Port mapping y volúmenes”Mapeo de puertos
Section titled “Mapeo de puertos”# Mapear puerto específicodocker run -d -p 8080:80 nginx
# Mapear a puerto aleatoriodocker run -d -p 80 nginx
# Mapear varios puertosdocker run -d -p 80:80 -p 443:443 nginxVolúmenes
Section titled “Volúmenes”# Montar un volumen (bind mount)docker run -d -v /home/user/data:/app/data nginx
# Montar con permisos específicosdocker run -d -v /home/user/data:/app/data:ro nginx # solo lectura
# Crear un volumen dockerdocker volume create mi-volumen
# Listar volúmenesdocker volume ls
# Usar volumen nombradodocker run -d -v mi-volumen:/app/data nginx
# Eliminar volumendocker volume rm mi-volumen
# Eliminar volúmenes no usadosdocker volume pruneDocker Compose
Section titled “Docker Compose”Comandos básicos
Section titled “Comandos básicos”# Levantar serviciosdocker compose up
# Levantar en segundo planodocker compose up -d
# Detener serviciosdocker compose down
# Detener y eliminar volúmenesdocker compose down -v
# Ver logsdocker compose logs
# Ver logs de un servicio específicodocker compose logs servicio
# Reiniciar serviciosdocker compose restart
# Ejecutar comando en un serviciodocker compose exec servicio bashEjemplo de docker-compose.yml
Section titled “Ejemplo de docker-compose.yml”version: '3.8'
services: web: image: nginx:alpine ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html restart: unless-stopped
db: image: postgres:15 environment: POSTGRES_PASSWORD: secret POSTGRES_USER: usuario POSTGRES_DB: mi_bd volumes: - postgres-data:/var/lib/postgresql/data restart: unless-stopped
volumes: postgres-data:# Listar redesdocker network ls
# Crear reddocker network create mi-red
# Crear red con driver bridgedocker network create --driver bridge mi-red
# Conectar contenedor a reddocker network connect mi-red contenedor
# Desconectar contenedor de reddocker network disconnect mi-red contenedor
# Eliminar reddocker network rm mi-red
# Ejecutar contenedor con red específicadocker run -d --network mi-red nginx
# Ver información de reddocker network inspect mi-redLimpieza y mantenimiento
Section titled “Limpieza y mantenimiento”# Ver espacio usadodocker system df
# Limpiar todo lo no usado (contenedores, imágenes, volúmenes)docker system prune
# Limpiar incluyendo volúmenes (cuidado)docker system prune -a -v
# Limpiar imágenes no usadasdocker image prune -a
# Limpiar contenedores detenidosdocker container prune
# Limpiar redes no usadasdocker network prune
# Limpiar volúmenes no usadosdocker volume pruneInformación y diagnóstico
Section titled “Información y diagnóstico”# Versión de Dockerdocker --versiondocker version
# Información del sistemadocker info
# Ver estadísticas de contenedoresdocker stats
# Ver procesos en un contenedordocker top nombre_contenedor
# Inspeccionar detalles de un contenedordocker inspect nombre_contenedor
# Ver historial de una imagendocker history mi-imagenAlmacenamiento de imágenes (Registry)
Section titled “Almacenamiento de imágenes (Registry)”# Iniciar sesión en Docker Hubdocker login
# Etiquetar imagen para subirdocker tag mi-imagen:1.0 usuario/mi-imagen:1.0
# Subir imagen a Docker Hubdocker push usuario/mi-imagen:1.0
# Descargar imagen privadadocker pull usuario/mi-imagen:1.0
# Buscar imágenes en Docker Hubdocker search nginx
# Cerrar sesióndocker logoutComandos útiles adicionales
Section titled “Comandos útiles adicionales”# Copiar archivos al contenedordocker cp archivo.txt nombre_contenedor:/ruta/destino
# Copiar archivos desde el contenedordocker cp nombre_contenedor:/ruta/origen archivo.txt
# Ver cambios en el sistema de archivos del contenedordocker diff nombre_contenedor
# Pausar contenedordocker pause nombre_contenedor
# Reanudar contenedordocker unpause nombre_contenedor
# Esperar a que un contenedor terminedocker wait nombre_contenedorAlias útiles
Section titled “Alias útiles”Añade a tu ~/.bashrc o ~/.zshrc:
# Alias comunesalias d='docker'alias dps='docker ps'alias dpsa='docker ps -a'alias di='docker images'alias dex='docker exec -it'alias dstop='docker stop'alias drm='docker rm'alias drmi='docker rmi'alias dcu='docker compose up -d'alias dcd='docker compose down'alias dcl='docker compose logs -f'Siempre que modifiques Dockerfile o docker-compose.yml, reconstruye con
docker compose up -d --build. Usa--no-cachesi tienes problemas con la caché.