Cómo se ejecutan los programas
Todo contenedor es simplemente un programa que se está ejecutando — lo que llamamos un proceso. Para entender Docker de verdad, hace falta un pequeño puñado de palabras cotidianas que describen cómo se ejecuta cualquier programa. Empezamos con qué es un proceso, adónde va el texto que imprime (stdou
Un programa en ejecución es como un empleado en un escritorio: las configuraciones llegan a su bandeja de entrada (variables de entorno); escribe notas normales en una pizarra compartida que todos pueden leer (stdout) y errores en una pizarra roja aparte (stderr); los mensajes le llegan por una ranura de correo numerada (un puerto); puedes tocarle el hombro para pedirle que termine (una señal); y cuando se va entrega una hoja que dice 'todo bien' (0) o 'hubo un problema' (distinto de cero) — el código de salida.
- proceso
- Un programa que se está ejecutando en este momento. El archivo en el disco es solo código que espera; cuando lo inicias, la instancia activa en memoria se llama proceso. Un contenedor es, en esencia, uno de esos procesos.
- stdout / stderr
- Dos 'canales' a los que un programa escribe texto. stdout (salida estándar) es el canal de salida normal — las cosas que el programa quiere que veas. stderr es un canal separado para errores, para poder mantener los mensajes de problemas aparte de la salida normal.
- puerto
- Un número que actúa como una 'puerta numerada' por la que otros programas o usuarios llegan a un programa en ejecución. Por ejemplo, un servidor web suele escuchar en el puerto 80 u 8080, como una ranura de correo numerada que todos saben usar.
- señal / signal
- Un mensaje corto que el sistema operativo le envía a un programa para pedirle algo — casi siempre 'por favor, detente'. Cuando presionas Ctrl-C en la terminal, se envía una señal de detención así, y un programa bien portado termina de forma ordenada.
- variable de entorno
- Una configuración nombre=valor que se le entrega a un programa cuando arranca, sin cambiar su código. Así es como el mismo programa recibe configuraciones distintas en cada lugar — por ejemplo una contraseña o un número de puerto — sin tocar el programa en sí.