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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Contenedor | una caja aislada que ejecuta un programa con lo que necesita | |
| Imagen | la plantilla de la que se crean contenedores | |
| Registro | el texto que un programa escribe sobre lo que hace | worker: empezando |
| Volumen | una carpeta que guarda sus datos aunque el contenedor se pare | |
| Servicio | un programa que otros programas usan, como una web o una cola | |
| Reiniciar | volver 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ón | Sin contenedor | Con contenedor |
|---|---|---|
| Instalar una web y una base de datos | Cada persona instala a mano | Se arrancan dos contenedores |
| Otra versión de un programa | Puede romper otra app | Cada contenedor lleva la suya |
| Borrar todo al terminar | Hay que desinstalar con cuidado | Se borra el contenedor |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Mira qué contenedores hay
docker ps -aSe 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
docker exec cache valkey-cli pingSe 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
docker exec web ls /settingsSe 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 registro | Qué cuenta |
|---|---|
| tienda: arrancando | El programa empieza |
| tienda: leyendo /ajustes/tienda.conf | Lee su archivo de ajustes |
| tienda: falta la línea PUERTO, no puedo arrancar | Aquí 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
| Estado | Qué significa | Qué haces |
|---|---|---|
| Up | Funciona | Nada |
| Exited (0) | Terminó bien, a propósito | Nada, salvo que debiera seguir |
| Exited (1) | Terminó con un error | Lee 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.