Conceptos 01 - Referencia de comandos de Docker para contenedores
Comandos esenciales para el ciclo de vida de un contenedor Docker individual. Seleccione cualquier comando para ver un ejemplo de uso en terminal.
Concepto 1 de 5
Obtención de imágenes
Descargar una imagen desde un registro antes de crear contenedores a partir de ella.
Obtención de imágenes 1 comando
Descarga una imagen desde Docker Hub u otro registro configurado.
docker pull nginx:alpinealpine: Pulling from library/nginxc6a83fedfae6: Pull completee5f4f1b35612: Pull completeDigest: sha256:a1b2c3d4...Status: Downloaded newer image for nginx:alpine
Este paso es opcional si va a usar docker run, ya que este descarga automáticamente la imagen cuando no existe en el sistema local. docker pull resulta útil para pre-descargar imágenes o actualizar a la versión más reciente.
Concepto 2 de 5
Creación y ejecución
Crear e iniciar contenedores, y definir su modo de ejecución, nombre, puertos y montajes.
Creación y ejecución 7 comandos
Crea e inicia un contenedor a partir de una imagen. Si la imagen no existe localmente, la descarga de forma automática.
# La imagen no existe localmente: se descarga antes de iniciardocker run nginx:alpineUnable to find image 'nginx:alpine' locallyalpine: Pulling from library/nginxc6a83fedfae6: Pull completeStatus: Downloaded newer image for nginx:alpine/docker-entrypoint.sh: Configuration complete
Ejecuta en primer plano. Al cerrar la terminal o presionar Ctrl+C, el contenedor se detiene. Docker asigna un nombre aleatorio si no se especifica uno.
Inicia el contenedor en modo desacoplado y devuelve su identificador.
docker run -d nginx:alpinea3f7c9e2b1d04f8a...
La terminal queda libre inmediatamente. Use docker logs para consultar la salida del contenedor en cualquier momento.
Inicia un contenedor con terminal interactiva conectada al proceso indicado.
docker run -it ubuntu:24.04 bashroot@c4a1b2e3f5d6:/# lsbin boot dev etc home lib ...root@c4a1b2e3f5d6:/# exit
La flag -i mantiene STDIN abierto y -t asigna una pseudo-terminal. Al escribir exit, el contenedor se detiene.
Asigna un nombre específico al contenedor en lugar del nombre aleatorio por defecto.
docker run -d --name webserver nginx:alpineb8e2a1c3d4f5... docker psCONTAINER ID IMAGE ... NAMESb8e2a1c3d4f5 nginx:alpine ... webserver
Los nombres deben ser únicos. Si ya existe un contenedor con ese nombre, incluso detenido, Docker rechazará la creación. Elimínelo primero con docker rm.
Publica un puerto del contenedor en el host, permitiendo acceso externo.
docker run -d -p 8080:80 nginx:alpined5f6a7b8c9e0... # Verificar el mapeo de puertoscurl http://localhost:8080<!DOCTYPE html>...Welcome to nginx!...
El formato es puerto_host:puerto_contenedor. En este ejemplo, el puerto 80 interno del contenedor queda accesible en el puerto 8080 del host.
Monta un directorio del host o un volumen nombrado dentro del contenedor.
# Bind mount: directorio local en el contenedordocker run -d -v ./html:/usr/share/nginx/html nginx:alpinee1f2a3b4c5d6... # Volumen nombrado: Docker gestiona el almacenamientodocker run -d -v pgdata:/var/lib/postgresql/data postgres:16f7a8b9c0d1e2...
Si la ruta del host comienza con ./ o /, Docker crea un bind mount. Si es solo un nombre, crea o reutiliza un volumen nombrado gestionado por Docker.
Crea un contenedor sin iniciarlo. Queda en estado created hasta que se ejecute manualmente.
docker create --name myapp node:20-alpinea1b2c3d4e5f6... # Iniciar el contenedor cuando sea necesariodocker start myapp
Acepta las mismas opciones que docker run pero separa la creación del inicio. Útil cuando se necesita configurar el contenedor antes de ejecutarlo.
Combine el modo de ejecución con las opciones más frecuentes de docker run y observe qué cambia en la terminal, el nombre, la red y los archivos del contenedor.
docker run nginx:alpine- Terminal
- Nombre
- Red
- Archivos
Concepto 3 de 5
Inspección y diagnóstico
Consultar qué contenedores existen, qué registran en sus logs, cómo están configurados y cuántos recursos consumen.
Inspección y diagnóstico 6 comandos
Lista los contenedores actualmente en ejecución.
docker psCONTAINER ID IMAGE STATUS PORTS NAMESb8e2a1c3d4f5 nginx:alpine Up 2 minutes 0.0.0.0:8080->80/tcp webserver
Solo muestra contenedores en ejecución. Para ver también los detenidos, use docker ps -a.
Lista todos los contenedores, incluyendo los detenidos y los que terminaron con error.
docker ps -aCONTAINER ID IMAGE STATUS NAMESb8e2a1c3d4f5 nginx:alpine Up 5 minutes webserverc9d0e1f2a3b4 ubuntu:24.04 Exited (0) 3 minutes ago sharp_turing
Los contenedores detenidos ocupan espacio en disco. Revise periódicamente esta lista y elimine los que no necesite con docker rm.
Muestra la salida estándar y de error acumulada del contenedor.
docker logs webserver --tail=5172.17.0.1 - GET / 200172.17.0.1 - GET /favicon.ico 404
Funciona tanto con contenedores en ejecución como detenidos. Use --tail=N para limitar a las últimas N líneas.
Sigue la salida del contenedor en tiempo real.
docker logs -f webserver172.17.0.1 - GET /api/health 200172.17.0.1 - GET /api/users 200▲ Ctrl+C para salir del seguimiento
Equivalente a tail -f. Combine con --since=5m para ver solo los logs de los últimos 5 minutos.
Devuelve información detallada del contenedor en formato JSON.
# Obtener la IP del contenedordocker inspect -f '{{.NetworkSettings.IPAddress}}' webserver172.17.0.2 # Ver los mounts configuradosdocker inspect -f '{{json .Mounts}}' webserver | jq
La flag -f acepta plantillas Go para extraer campos específicos. Sin ella, devuelve todo el JSON del contenedor.
Muestra en tiempo real el consumo de CPU, memoria y red de los contenedores activos.
docker stats --no-streamCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM %b8e2a1c3d4f5 webserver 0.03% 4.2MiB / 7.77GiB 0.05%
Sin --no-stream, la vista se actualiza continuamente. Para un solo contenedor, use docker stats webserver.
Concepto 4 de 5
Interacción
Ejecutar comandos dentro de un contenedor en ejecución y copiar archivos entre el host y el contenedor.
Interacción 3 comandos
Ejecuta un comando dentro de un contenedor que ya está en ejecución.
docker exec webserver cat /etc/nginx/nginx.confuser nginx;worker_processes auto;...
El comando se ejecuta y termina. No abre sesión interactiva. Útil para verificar archivos de configuración o ejecutar comandos puntuales.
Abre una sesión de terminal interactiva dentro de un contenedor en ejecución.
docker exec -it webserver sh/ # ls /usr/share/nginx/html50x.html index.html/ # exit
En imágenes basadas en Alpine use sh. En imágenes basadas en Debian o Ubuntu, bash está disponible. Al salir, el contenedor sigue en ejecución.
Copia archivos entre el sistema de archivos del host y un contenedor.
# Copiar un archivo del host al contenedordocker cp ./index.html webserver:/usr/share/nginx/html/ # Copiar un archivo del contenedor al hostdocker cp webserver:/var/log/nginx/error.log ./error.log
Funciona con contenedores en ejecución o detenidos. El formato usa contenedor:ruta para identificar el sistema de archivos del contenedor.
Concepto 5 de 5
Control de ciclo de vida
Detener, iniciar, reiniciar, pausar, reanudar y eliminar contenedores.
Control de ciclo de vida 6 comandos
Envía SIGTERM al proceso principal y detiene el contenedor de forma controlada.
docker stop webserverwebserver
Docker espera 10 segundos por defecto antes de enviar SIGKILL. Use -t 30 para extender el período de gracia si el proceso necesita más tiempo para finalizar.
Inicia un contenedor previamente detenido, conservando su configuración original.
docker start webserverwebserver docker psCONTAINER ID IMAGE STATUS NAMESb8e2a1c3d4f5 nginx:alpine Up 2 seconds webserver
Reutiliza los puertos, volúmenes y variables definidos durante la creación. No reconstruye el contenedor.
Detiene e inicia el contenedor en una sola operación.
docker restart webserverwebserver
Equivale a ejecutar docker stop seguido de docker start. Útil después de modificar variables de entorno o configuración interna.
Suspende todos los procesos del contenedor sin detenerlo.
docker pause webserverwebserver docker psCONTAINER ID IMAGE STATUS NAMESb8e2a1c3d4f5 nginx:alpine Up 5m (Paused) webserver
Usa cgroups para congelar los procesos. El contenedor no responde a peticiones pero mantiene su estado en memoria. Reanude con docker unpause.
Reanuda los procesos de un contenedor previamente suspendido.
docker unpause webserverwebserver docker psCONTAINER ID IMAGE STATUS NAMESb8e2a1c3d4f5 nginx:alpine Up 6 minutes webserver
La reanudación es inmediata. Los procesos continúan desde el punto exacto en que fueron congelados.
Elimina un contenedor detenido y libera los recursos asociados.
# Eliminar un contenedor detenidodocker rm sharp_turingsharp_turing # Forzar la eliminación de un contenedor en ejecucióndocker rm -f webserverwebserver
Precaución: la flag -f envía SIGKILL y elimina el contenedor sin detención controlada. Los datos no persistidos en volúmenes se pierden de forma irreversible.
Lleve el contenedor webserver por sus estados. Pruebe también las órdenes que no aplican, como eliminar un contenedor en ejecución sin -f, para ver cómo responde el daemon.
- Sin contenedorTodavía no existe o ya se eliminó.
- CreatedCreado, sin proceso en ejecución.
- RunningEl proceso principal se ejecuta.
- PausedProcesos congelados con cgroups; estado en memoria.
- ExitedDetenido; conserva su configuración y su sistema de archivos.
Ejecute un comando
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