Conceptos 05 - Comandos Docker
Todos los comandos que aparecen en las lecturas prácticas del módulo, organizados por función. Seleccione cualquier comando de un grupo para ver un ejemplo de uso.
Administración básica de Docker
Concepto 1 de 14
Configuración
Preparar el usuario para ejecutar Docker sin sudo.
Agrega el usuario actual al grupo docker para evitar usar sudo.
sudo usermod -aG docker $USER# Cerrar sesión y volver a iniciar para aplicargroupsuser sudo docker
Concepto 2 de 14
Imágenes
Descargar, listar y eliminar imágenes locales.
Descarga una imagen desde Docker Hub.
docker pull nginx:alpineStatus: Downloaded newer image for nginx:alpine
Lista las imágenes locales. Equivalente a docker image ls.
docker imagesREPOSITORY TAG IMAGE ID SIZEnginx alpine f7a8b9c0d1e2 43MB
Elimina una imagen local. Equivalente a docker image rm.
docker rmi nginx:alpineUntagged: nginx:alpine
Concepto 3 de 14
Contenedores
Crear e iniciar contenedores en primer plano, en modo interactivo o en segundo plano.
Crea e inicia un contenedor en primer plano.
docker run nginx:alpineready for connections on port 80
Inicia un contenedor interactivo con nombre y terminal.
docker run --name test -it alpine sh/ # echo "dentro del contenedor"/ # exit
Ejecuta un comando específico en modo interactivo.
docker run -it python:3.12 pythonPython 3.12.0>>> print("hola")
Inicia en modo desacoplado, en segundo plano.
docker run -d nginx:alpinea3f7c9e2b1d0...
Concepto 4 de 14
Inspección y listado
Ver qué contenedores están en ejecución y cuáles están detenidos.
Lista contenedores en ejecución.
docker psCONTAINER ID IMAGE STATUS NAMESb8e2a1c3d4f5 nginx:alpine Up 2 min web
Incluye contenedores detenidos.
docker ps -aCONTAINER ID IMAGE STATUS NAMESb8e2a1c3d4f5 nginx:alpine Up 5 min webc9d0e1f2a3b4 alpine Exited (0) 3 min ago test
Concepto 5 de 14
Control del ciclo de vida
Detener, volver a iniciar y eliminar contenedores.
Detiene el contenedor de forma controlada.
docker stop webweb
Reinicia un contenedor detenido.
docker start webweb
Elimina un contenedor detenido.
docker rm testtest
Concepto 6 de 14
Ejecución en contenedores
Ejecutar comandos dentro de un contenedor activo o conectarse a su salida.
Ejecuta un comando dentro de un contenedor activo.
docker exec web cat /etc/hostnameb8e2a1c3d4f5
Conecta la terminal a la salida estándar del contenedor.
Ctrl+C puede detener el contenedor. Use Ctrl+P, Ctrl+Q para desconectar sin detenerlo. Prefiera exec para depuración.
Concepto 7 de 14
Limpieza
Encontrar y eliminar contenedores finalizados, imágenes huérfanas y recursos sin uso.
Filtra contenedores finalizados.
docker ps -a -f status=exitedCONTAINER ID IMAGE STATUS NAMESc9d0e1f2a3b4 alpine Exited (0) 5 min ago test
Elimina todos los contenedores finalizados en una sola operación.
El subcomando $() ejecuta primero el listado y pasa los IDs como argumento a docker rm.
Elimina imágenes huérfanas.
docker image pruneTotal reclaimed space: 420MB
Elimina contenedores detenidos, redes huérfanas e imágenes sin uso.
Precaución. Operación destructiva. Agregue --volumes para incluir volúmenes huérfanos. Revise con docker system df antes de ejecutar.
Muestra uso de disco por tipo de recurso Docker.
docker system dfTYPE TOTAL ACTIVE SIZE RECLAIMABLEImages 5 2 1.2GB 820MB (68%)Containers 3 1 12.5MB 10MB (80%)
Concepto 8 de 14
Ayuda
Consultar las opciones disponibles de cualquier comando Docker.
Muestra las opciones disponibles de cualquier comando Docker.
docker run --helpUsage: docker run [OPTIONS] IMAGE [COMMAND]-d Run container in background-p Publish a container's port--name Assign a name to the container...
docker run en profundidad
Concepto 9 de 14
Verificación inicial
Confirmar que Docker está instalado y que el daemon responde.
Confirma la versión instalada de Docker.
docker --versionDocker version 27.1.0, build abcdef0
Verifica que el daemon esté activo.
Si falla con "Cannot connect to the Docker daemon", el servicio no está corriendo.
Concepto 10 de 14
Ejecución con opciones
Combinar puertos, nombres, volúmenes, variables de entorno y modo interactivo en docker run.
Mapeo de puertos con nombre asignado.
docker run -p 8080:80 --name servidor-web httpdAH00558: httpd: listening on port 80
Contenedor efímero que se elimina al detenerse.
La flag --rm evita acumular contenedores detenidos. Útil para pruebas rápidas.
Ejecución con volumen para persistencia.
docker run -d -v pgdata:/var/lib/postgresql/data postgres:17f7a8b9c0d1e2...
Monta un sistema de archivos temporal en memoria.
Los datos en tmpfs se pierden al detener el contenedor. Útil para datos temporales de alto rendimiento.
Inyecta variables de entorno al contenedor.
docker run -d -p 5432:5432 \-e POSTGRES_PASSWORD=secret \-v pgdata:/var/lib/postgresql/data \--name db postgres:17
Carga variables desde un archivo .env.
Evita exponer credenciales en el historial del shell. Recuerde agregar .env a .gitignore.
Terminal interactiva para exploración.
docker run -it ubuntu:24.04 /bin/bashroot@c4a1b2e3:/# cat /etc/os-release
Activa y desactiva flags sobre la misma orden con postgres:17 y observa cómo cambia el resultado.
Flags de docker run
Concepto 11 de 14
Volúmenes
Crear, inspeccionar y eliminar los volúmenes que persisten datos fuera del contenedor.
Lista los volúmenes gestionados por Docker.
docker volume lsDRIVER VOLUME NAMElocal pgdata
Muestra detalles del volumen en formato JSON.
docker volume inspect pgdata"Mountpoint": "/var/lib/docker/volumes/pgdata/_data"
Crea un volumen nombrado.
docker volume create appdataappdata
Elimina un volumen específico.
Precaución. Los datos del volumen se pierden de forma irreversible.
Elimina todos los volúmenes no utilizados.
docker volume pruneTotal reclaimed space: 256MB
Elige dónde se guardan los datos de /data, escribe algo y comprueba qué sobrevive al reinicio y a la recreación del contenedor.
Contenedor #1
/datacapa de escrituraregistro.txtvacíoVolumen appdata
Escribe datos en /data y luego prueba qué sobrevive.
Concepto 12 de 14
Inspección y logs
Revisar configuración, salida, puertos y eventos de los contenedores.
Información detallada en JSON de cualquier objeto Docker.
docker inspect db > salida.jsondocker inspect db | jq '.[0].NetworkSettings.IPAddress'"172.17.0.3"
Muestra la salida acumulada del contenedor.
docker logs dbLOG: database system is ready to accept connections
Sigue los logs en tiempo real.
Combine flags: docker logs -f --tail 50 -t db muestra las últimas 50 líneas con timestamps y sigue en vivo.
Limita la salida a las últimas N líneas.
docker logs --tail 5 dbIncluye timestamp en cada línea de log.
docker logs -t db2025-01-15T10:30:01Z LOG: ready
Muestra los mapeos de puertos del contenedor.
docker port db5432/tcp -> 0.0.0.0:5432
Stream de eventos del daemon Docker en tiempo real.
Útil para depuración avanzada. Muestra eventos de contenedores, imágenes, redes y volúmenes. Ctrl+C para salir.
Concepto 13 de 14
Limpieza completa
Los comandos prune y su alcance, del más específico al más amplio.
Elimina todos los contenedores detenidos.
docker container pruneTotal reclaimed space: 10MB
Elimina todas las imágenes sin contenedores asociados.
Precaución. Con -a elimina también imágenes con tag pero sin contenedores que las usen. Más agresivo que sin flag.
Elimina redes no utilizadas.
docker network pruneDeleted Networks: mynet
Limpieza total: contenedores, imágenes, redes y volúmenes.
Precaución. Máximo nivel de limpieza. Elimina todo lo no utilizado activamente, incluyendo datos persistentes en volúmenes. Use con precaución.
Revise el uso de disco antes y después de limpiar.
Ejecute antes de cualquier prune para saber qué espacio es recuperable.
Elige un comando de limpieza y observa qué recursos de un sistema de ejemplo elimina y cuáles conserva.
- Contenedor
webEn ejecución - Contenedor
testDetenido - Imagen
nginx:alpineUsada por web - Imagen
alpineUsada por test (detenido) - Imagen
python:3.12Con tag, sin contenedores - Imagen
<none>:<none>Huérfana (dangling) - Red
bridgePredeterminada - Red
mynetSin contenedores - Volumen
pgdataNombrado, sin uso - Volumen
3f9c1e…Anónimo, sin uso - Caché
build cacheSin uso
Comportamiento de Docker Engine 23 o posterior. Inventario de ejemplo.
Concepto 14 de 14
Sistema del host
Diagnosticar en el host los puertos ocupados que impiden publicar un contenedor.
Identifica qué proceso ocupa un puerto en el host.
sudo lsof -i :5432COMMAND PID USER TYPE NAMEpostgres 1234 pg IPv4 *:5432
Alternativa para identificar puertos en uso.
Útil cuando Docker falla al publicar un puerto porque ya está ocupado por un servicio local.
Detiene un servicio del host que interfiere con Docker.
sudo systemctl stop postgresql# Libera el puerto 5432 para uso de Docker
Autoevaluación
Comprueba lo que aprendiste
Cinco preguntas rápidas para verificar las ideas clave de la lectura. Cada respuesta incluye una explicación.
0/5 respuestas correctas