docker pull <image>
Descargar imagen del registry
docker images
Listar imágenes locales
docker rmi <image>
Eliminar imagen
docker image prune -a
Eliminar todas las imágenes sin usar
docker build -t name:tag .
Compilar imagen desde Dockerfile
docker build --no-cache -t name .
Compilar sin cache
docker tag src:latest user/src:1.0
Etiquetar imagen
docker push user/image:tag
Subir imagen al registry
docker history <image>
Mostrar historial de capas
docker save -o backup.tar image
Guardar imagen a tar
docker load -i backup.tar
Cargar imagen desde tar
docker run <image>
Ejecutar contenedor desde imagen
docker run -d --name web nginx
Ejecutar en segundo plano con nombre
docker run -it ubuntu bash
Ejecutar interactivo con terminal
docker run -p 8080:80 nginx
Mapear puerto host a contenedor
docker run -v /host:/container image
Montar directorio host como volumen
docker run --rm image
Auto-eliminar al salir
docker run -e KEY=value image
Establecer variable de entorno
docker run --env-file .env image
Cargar env desde archivo
docker ps
Listar contenedores en ejecución
docker ps -a
Listar todos los contenedores
docker stop <container>
Detener contenedor en ejecución
docker start <container>
Iniciar contenedor detenido
docker restart <container>
Reiniciar contenedor
docker rm <container>
Eliminar contenedor detenido
docker rm -f <container>
Forzar eliminación
docker container prune
Eliminar todos los contenedores detenidos
docker exec -it <container> bash
Abrir shell en contenedor
docker logs <container>
Mostrar logs del contenedor
docker logs -f --tail 100 <container>
Seguir últimas 100 líneas de log
docker inspect <container>
Mostrar info detallada (JSON)
docker stats
Uso de recursos en vivo
docker cp file container:/path
Copiar archivo al contenedor
FROM node:20-alpine
Imagen base
WORKDIR /app
Establecer directorio de trabajo
COPY . .
Copiar archivos a la imagen
COPY package*.json ./
Copiar según patrón
RUN npm install
Ejecutar comando en build
ENV NODE_ENV=production
Establecer variable de entorno
EXPOSE 3000
Documentar puerto de escucha
CMD ["node", "server.js"]
Comando por defecto del contenedor
ENTRYPOINT ["/app/start.sh"]
Entrypoint fijo
ARG VERSION=1.0
Argumento de build
USER node
Cambiar usuario (seguridad)
HEALTHCHECK CMD curl -f http://localhost/ || exit 1
Healthcheck del contenedor
docker compose up
Iniciar servicios de compose
docker compose up -d
Iniciar en segundo plano
docker compose down
Detener y eliminar servicios
docker compose down -v
Detener y eliminar también volumes
docker compose ps
Listar servicios compose
docker compose logs -f service
Seguir logs de un servicio
docker compose build
Recompilar todos los servicios
docker compose exec service bash
Shell en un servicio compose
docker compose restart service
Reiniciar un servicio
docker network ls
Listar redes
docker network create mynet
Crear red
docker run --network mynet image
Conectar contenedor a red
docker volume ls
Listar volúmenes
docker volume create mydata
Crear volumen con nombre
docker volume prune
Eliminar volúmenes sin usar
docker system prune -a
Eliminar todos los datos sin usar (cuidado)
Cheat Sheet de Docker — Contenedores, Imágenes, Compose, Volúmenes y Redes
Docker salió en 2013 y convirtió los contenedores de una curiosidad del kernel Linux en la forma por defecto de empaquetar software de servidor. La chuleta de abajo cubre 60+ comandos en imágenes, contenedores, instrucciones de Dockerfile, Compose, redes y volúmenes. La mayoría de los líos con Docker no vienen de olvidar comandos. Vienen de rarezas que parecen normales hasta que muerden. Un `COPY . .` antes de `RUN npm install` invalida la capa cacheada del install en cada cambio de fuente, y un rebuild de 5 s pasa a 5 min — el arreglo es `COPY package*.json ./` y ejecutar el install antes de copiar el resto. Un bind mount con `-v /host:/container` oculta lo que la imagen cocía en esa ruta, por eso una imagen recién construida aparece vacía en dev. `docker system prune -a` elimina todas las imágenes no usadas por un contenedor en marcha, no únicamente las dangling, así que la imagen de un contenedor parado se va con él. Estos son los fragmentos consultados al depurar eso: el orden de `COPY`, la bandera de servicio en Compose, el log tail correcto, sin releer la documentación desde la primera página.
Trampas habituales en Docker
Hay un puñado de patrones que merecen sitio cerca de la cabecera de cualquier Dockerfile. Conviene ordenar las instrucciones de menos a más cambiantes para que la caché de build se mantenga caliente: imagen base, paquetes del sistema, manifiestos de dependencias (`package*.json`, `requirements.txt`, `go.mod`), `RUN install`, y solo después el código de la aplicación. `CMD` y `ENTRYPOINT` parecen similares pero difieren en runtime: `CMD` es el comando por defecto y queda sustituido por lo que se pase tras `docker run image`, mientras que `ENTRYPOINT` es fijo y los argumentos pasan a ser sus parámetros, que es lo que casi todas las imágenes productivas quieren. Un `.dockerignore` en el contexto de build evita que `node_modules`, `.git` y los artefactos de build acaben copiándose en cada capa; sin él, la imagen se hincha y la invalidación de caché se vuelve impredecible. `EXPOSE` documenta el puerto a la escucha pero no lo publica — solo `-p` o el `ports:` de Compose hacen que el puerto sea alcanzable desde el host. La chuleta agrupa todo esto en Imágenes, Contenedores, Dockerfile, Compose y Redes para que la sección adecuada esté a un clic.
- Más de 60 comandos de Docker
- Gestión de imágenes (pull, build, push, tag)
- Ciclo de vida (run, exec, logs, stats)
- Referencia de instrucciones Dockerfile
- Comandos de docker compose
- Redes y volúmenes
Gratis. Sin registro. Tus datos permanecen en tu navegador. Anuncios mediante Google AdSense (con consentimiento).
Por Marco B. ·