¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Qué es un contenedor y cómo se arregla

Después de esta lección: Puedo ejecutar una aplicación en un contenedor y encontrar por qué falla.

Lección de 45 min3 comandosLaboratorio de Docker: aprende contenedores, registros y reinicios arreglando un servicio roto

La app que solo funciona en mi portátil

Un contenedor es una caja que lleva un programa junto con todo lo que necesita para funcionar. Con él, una aplicación se ejecuta igual en cualquier ordenador.

Piensa en una app de tu clase que funciona en tu portátil y falla en el de tu compañera. Faltaba un programa auxiliar o tenía otra versión. Hoy aprendes a evitarlo y a arreglar un contenedor que falla.

Al final de esta lección

Nota

Puedo ejecutar una aplicación en un contenedor y encontrar por qué falla.

Palabras clave

PalabraQué significaEjemplo
Contenedoruna caja aislada que ejecuta un programa con lo que necesita
Imagenla plantilla de la que se crean contenedores
Registroel texto que un programa escribe sobre lo que haceworker: empezando
Volumenuna carpeta que guarda sus datos aunque el contenedor se pare
Servicioun programa que otros programas usan, como una web o una cola
Reiniciarvolver a arrancar el mismo contenedor

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un contenedor empaqueta una aplicación

Un contenedor lleva el programa y las piezas que usa. Dentro ve su propio sistema de archivos, como si estuviera solo.

Fuera, comparte el ordenador con otros contenedores. Por eso arranca en segundos y gasta poca memoria.

Ejemplo resuelto: con y sin contenedor

SituaciónSin contenedorCon contenedor
Instalar una web y una base de datosCada persona instala a manoSe arrancan dos contenedores
Otra versión de un programaPuede romper otra appCada contenedor lleva la suya
Borrar todo al terminarHay que desinstalar con cuidadoSe borra el contenedor

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Mira qué contenedores hay

Comando
docker ps -a

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cómo se lee la lista de contenedores

La lista tiene una fila por contenedor. La primera columna es el identificador. IMAGE es la imagen de la que viene. STATUS dice si funciona. NAMES es el nombre.

Con -a salen también los que están parados. Sin -a, solo salen los que funcionan.

Verás tres servicios: web, cache y worker. Uno de ellos está parado.

Imagen y contenedor, la receta y el plato

Una imagen no hace nada por sí sola. Es la plantilla con el programa y sus piezas.

Un contenedor es una copia de esa imagen en marcha. De una misma imagen se pueden crear muchos contenedores, cada uno con su propio estado.

Pregunta a la cola si está viva

Comando
docker exec cache valkey-cli ping

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Mira dentro del contenedor web

Comando
docker exec web ls /settings

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Qué hace docker exec

docker exec ejecuta un comando dentro de un contenedor que funciona. El primer comando pregunta a la cola con valkey-cli ping. Si funciona, contesta PONG.

El segundo lista la carpeta /settings de web. Es el volumen compartido, y ahí hay un archivo worker.conf con los ajustes del trabajador.

El registro dice por qué falla un contenedor

Cuando un contenedor se para, lo primero es leer su registro. El programa escribe ahí lo que hacía y por qué paró.

Se lee con docker logs y el nombre del contenedor. La última línea suele ser la más útil.

Un registro de ejemplo, de otra aplicación

Línea del registroQué cuenta
tienda: arrancandoEl programa empieza
tienda: leyendo /ajustes/tienda.confLee su archivo de ajustes
tienda: falta la línea PUERTO, no puedo arrancarAquí está el motivo del fallo

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Estados que verás en la columna STATUS

EstadoQué significaQué haces
UpFuncionaNada
Exited (0)Terminó bien, a propósitoNada, salvo que debiera seguir
Exited (1)Terminó con un errorLee su registro

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que un contenedor es una máquina virtual entera. No lo es: comparte el núcleo del ordenador y solo aísla un programa. Por eso arranca en segundos. Y los archivos que escribes dentro se pierden cuando se borra el contenedor, salvo los del volumen.

Para ir más lejos: qué se guarda

Antes del laboratorio, piensa en dos archivos: uno que crees dentro de un contenedor y otro que guardas en la carpeta /settings. Escribe qué le pasa a cada uno cuando el laboratorio se para. Comprueba tu respuesta al terminar el laboratorio.

Sobre este laboratorio y su código: Laboratorio de Docker: aprende contenedores, registros y reinicios arreglando un servicio roto

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.