Skip to content

4. Operar Docker

Temas del programa: 4.1.2

Observar antes de modificar

Terminal window
docker ps

Muestra los contenedores que están ejecutándose

Ejemplo de salida ilustrativa

CONTAINER ID IMAGE COMMAND STATUS
a13c9e7d2b10 nginx:alpine "/docker-entrypoint…" Up 2 minutes
PORTS NAMES
127.0.0.1:8080->80/tcp web

Los identificadores y tiempos son ficticios

ColumnaSignificado
CONTAINER IDIdentificador abreviado
IMAGEImagen utilizada
COMMANDComando configurado
STATUSEstado actual
PORTSPuertos publicados o expuestos
NAMESNombre asignado al contenedor

El nombre puede facilitar la administración sin tener que copiar el ID

Terminal window
docker ps -a

Ejemplo de salida ilustrativa

CONTAINER ID IMAGE STATUS NAMES
a13c9e7d2b10 nginx:alpine Up 2 minutes web
b51f0c8a8e90 hello-world Exited (0) 5 minutes ago hopeful_morse

docker ps muestra los contenedores activos

docker ps -a incluye también los contenedores detenidos y terminados

Terminal window
docker images

Ejemplo de salida ilustrativa

REPOSITORY TAG IMAGE ID CREATED SIZE
nginx alpine 91ca84b4e7d1 2 weeks ago 48MB
hello-world latest 74cc54e27dc4 3 months ago 10kB

Los identificadores tamaños y fechas son ejemplos

Una imagen puede existir localmente aunque no haya ningún contenedor ejecutándose con ella

Terminal window
docker pull nginx:alpine

Descarga una imagen desde un registry

Terminal window
docker image ls

Lista las imágenes locales

Terminal window
docker image inspect nginx:alpine

Muestra metadatos de una imagen

Terminal window
docker image rm nginx:alpine

Elimina una referencia de imagen local cuando no existan dependencias que impidan hacerlo

Terminal window
docker run -d \
--name web \
-p 127.0.0.1:8080:80 \
nginx:alpine

Ahora podemos consultar

Terminal window
docker ps

Y abrir en el navegador

http://localhost:8080

Si el puerto está ocupado o Docker no está disponible el resultado será diferente

Terminal window
docker run -d nginx:alpine

La opción -d solicita ejecutar el contenedor en segundo plano

Sin ella la terminal puede permanecer conectada al proceso o mostrar directamente su salida

El comportamiento exacto también depende del programa ejecutado y de cómo maneja la entrada y salida estándar

Terminal window
docker logs web

Para seguir la salida conforme aparecen nuevas líneas

Terminal window
docker logs -f web

Para limitar la cantidad inicial de líneas

Terminal window
docker logs --tail 50 web

Los registros ayudan a entender qué hizo el proceso y por qué pudo fallar

No todos los programas envían automáticamente todos sus registros a la salida estándar

Terminal window
docker exec -it web sh

Descomposición

docker exec
Ejecuta un proceso en un contenedor existente
-it
Permite interactuar desde la terminal
web
Nombre del contenedor
sh
Intérprete de comandos solicitado

No todas las imágenes incluyen bash

Las imágenes mínimas pueden proporcionar solamente sh u otras herramientas reducidas

Terminal window
pwd
ls -lah
ps

Los comandos disponibles dependen de la imagen

Al salir de la terminal

Terminal window
exit

normalmente termina la sesión interactiva pero no necesariamente el proceso principal del contenedor

Terminal window
docker inspect web

Permite consultar información estructurada como

  • Configuración de ejecución
  • Direcciones de red
  • Montajes
  • Estado del contenedor
  • Imagen de origen
  • Configuración de puertos

Para obtener solo algunos campos se puede utilizar el formato de salida de Docker

Terminal window
docker inspect --format '{{.State.Status}}' web

Salida ilustrativa

running
Terminal window
docker stats

Muestra información dinámica sobre el consumo de recursos de los contenedores

Ejemplo ilustrativo

CONTAINER CPU % MEM USAGE / LIMIT MEM %
web 0.10% 12MiB / 2GiB 0.59%

Los valores dependen de la aplicación del host y de los límites configurados

Terminal window
docker stop web

Solicita detener el contenedor

Terminal window
docker start web

Inicia un contenedor existente que está detenido

Terminal window
docker rm web

Elimina el contenedor detenido

Terminal window
docker image rm nginx:alpine

Elimina la imagen local si Docker permite retirarla

Detener un contenedor no es lo mismo que eliminarlo y eliminar un contenedor no equivale a eliminar la imagen

IMAGEN
│
▼
CREAR CONTENEDOR
│
▼
CONTENEDOR
│
▼
EJECUTAR PROCESO
│ │
stop termina
│ │
▼ ▼
DETENIDO EXITED
│
▼
start

Un contenedor detenido puede volver a iniciarse si su configuración lo permite

Un contenedor eliminado debe crearse nuevamente a partir de una imagen

Terminal window
docker create --name web nginx:alpine

Crea el contenedor sin iniciar el proceso principal

Terminal window
docker start web

Inicia el contenedor creado

En cambio

Terminal window
docker run --name web nginx:alpine

es una forma abreviada de solicitar la creación y ejecución del contenedor

Este tema se practica en el Laboratorio 1 — Primeros contenedores.

Continúa con 5. Linux básico para trabajar con contenedores.