Comprendiendo el estado de Docker

Clase 10 de 33Curso de Docker

Contenido del curso

Resumen

Dominar los comandos básicos de Docker para crear, inspeccionar, nombrar y eliminar contenedores es el primer paso para trabajar con eficiencia en cualquier entorno de desarrollo. Aquí se explican los comandos esenciales que te permitirán gestionar contenedores directamente desde la terminal, entendiendo qué sucede detrás de cada instrucción.

¿Cómo se crea y ejecuta un contenedor con docker run?

El comando docker run es el punto de partida. Cada vez que ejecutas docker run hello-world, Docker crea un contenedor nuevo y lo ejecuta [0:27]. No reutiliza uno anterior: siempre genera una instancia independiente. La primera vez que lo corres, Docker descarga la imagen (la descripción del contenedor) desde el registro. Las ejecuciones siguientes no necesitan esa descarga, pero el resultado en pantalla es el mismo [0:42].

Esto significa que si ejecutas el comando dos veces, tendrás dos contenedores distintos en tu sistema, cada uno con su propio identificador.

¿Cómo ver los contenedores activos y detenidos con docker ps?

Para consultar qué contenedores están corriendo en tu instalación de Docker, se utiliza el comando docker ps [1:10]. Este comando se comunica con el Docker Daemon, que es el servicio en segundo plano encargado de gestionar los contenedores según la arquitectura cliente-servidor de Docker.

  • docker ps muestra solo los contenedores que están corriendo en este momento [1:22].
  • docker ps -a muestra todos los contenedores, incluidos los que ya terminaron su ejecución [1:38].

Al usar docker ps -a después de ejecutar dos veces docker run hello-world, se ven dos entradas: una por cada contenedor creado [1:48]. Cada entrada incluye columnas como el container ID, la imagen utilizada, el estado y el nombre asignado automáticamente por Docker.

¿Qué es docker inspect y para qué sirve?

El comando docker inspect permite ver toda la configuración y especificación de un contenedor en detalle [2:18]. Se puede usar con el container ID o con el nombre del contenedor. Por ejemplo:

bash docker inspect <container_id> docker inspect magical_blackwell

Ambas formas devuelven el mismo resultado [2:55]. El container ID es un identificador generado automáticamente por Docker, mientras que el nombre funciona como un alias amigable para referirse al contenedor sin memorizar cadenas alfanuméricas.

¿Cómo nombrar, renombrar y eliminar contenedores en Docker?

Asignar nombres personalizados a los contenedores facilita mucho el trabajo diario. Para hacerlo, se usa la opción --name al momento de ejecutar docker run [3:50]:

bash docker run --name helloplatzi hello-world

Esto crea un contenedor con el nombre helloplatzi en lugar de uno aleatorio. Sin embargo, Docker tiene una limitación importante: no permite dos contenedores con el mismo nombre en la misma instalación [4:28]. Si intentas crear otro con un nombre que ya existe, el comando fallará.

¿Cómo renombrar un contenedor existente?

Para cambiar el nombre de un contenedor ya creado, se usa docker rename [4:42]:

bash docker rename helloplatzi holaplatzi

Después de renombrarlo, el nombre anterior queda libre y puede usarse para un contenedor nuevo.

¿Cómo borrar contenedores que ya no se necesitan?

Los contenedores detenidos siguen existiendo en el sistema y pueden acumularse. Para eliminar uno en particular, se usa docker rm seguido del nombre o el ID [5:22]:

bash docker rm helloplatzi

Una vez borrado, ese contenedor deja de existir por completo y su información no se puede recuperar [5:40]. Si necesitas eliminar todos los contenedores detenidos de una sola vez, el comando docker container prune lo hace de forma rápida [5:58]:

bash docker container prune

Docker pedirá confirmación y luego mostrará los IDs completos de los contenedores eliminados. Vale notar que el container ID que aparece en docker ps es una versión abreviada del identificador real, que es mucho más largo [6:18].

Mantener el entorno limpio eliminando contenedores innecesarios es una buena práctica que te ahorrará confusiones a medida que trabajes con más imágenes y servicios. ¿Ya probaste estos comandos en tu terminal? Comparte tu experiencia y cualquier duda que te haya surgido.