Hay un servidor que usan en común varias decenas de personas.
Cada quien está sirviendo su proyecto en un contenedor,
pero cuando ocurren problemas como un reinicio del servidor, al administrador le resulta complicado responder ante estos contenedores.
No está claro si habría que pedirles que entreguen de antemano el comando para ejecutar su contenedor Docker y luego correrlo uno por uno,
o si habría que hacerlo con Docker Compose y entrar carpeta por carpeta de cada proyecto para levantar el compose, etc.
Como administrador, agradecería consejos sobre cómo gestionar varios contenedores.
9 comentarios
Gracias a todos los que respondieron. Creo que la meta de este año debería ser adoptar Kubernetes.
La forma más sencilla es ejecutar el contenedor como daemon para que también se inicie cuando arranque el sistema operativo.
Si es de la familia EL (Enterprise Linux, término general para la línea RHEL), se puede registrar el contenedor como un servicio de
systemd. A eso le llaman Quadlet.A simple vista, parece que se podría resolver con
depend on,restart alwaysounless stoped, pero da la impresión de que hay alguna situación complicada que no está incluida en la pregunta. Aun así, si hablamos de varias decenas de personas, al final parece que van a tener que pasarse a Kubernetes.Tal como está la pregunta, probablemente también puedan encontrar la respuesta preguntándoselo a una IA.
Si comparten lo anterior, creo que será más fácil conversar del tema.
Respondiendo simplemente con base en lo que mencionaste...
No entiendo por qué sería necesario un comando para ejecutar contenedores. Pidan que les hagan un archivo de Compose, y con base en eso lo mejor es configurarlo para poder levantar todo con el mismo comando (el comando de Compose).
:) Como eres administrador, si pides que lo hagan así, seguro los demás te ayudarán, así que empújalo :)
Personalmente, no recomiendo mucho
k8sporque me parece una solución con una carga grande para un entorno administrado por una sola persona.Siempre pienso que lo mejor es mantener la infraestructura lo más simple posible.
Son 4 servidores on-premise.
Lo hago yo solo.
Docker pasó seguridad y ya van 4 meses desde que se adoptó en la empresa, y de
k8ssolo conozco el concepto. La implementación de HARBOR para Docker pronto me tocará hacerla a mí, y una vez que Harbor quede implementado, está previsto bloquear Docker Hub. Probablemente solo yo tendré abierto Docker Hub y, cuando lleguen solicitudes, solo yo descargaré imágenes desde Docker Hub y las subiré al Harbor interno de la empresa.No forcé todo con el comando de Compose ni fui proyecto por proyecto entrando a cada carpeta para ejecutar
compose upmanualmente porque me parecía poco realista; en su lugar pedí que me dieran los comandos de Docker con ruta absoluta, pero últimamente no puedo dejar de pensar que ha sido un enfoque equivocado.¿No bastaría con darle una opción de reinicio a Docker?
En ese caso, es mejor usar Kubernetes y asignar un
contexta cada usuario.También se puede limitar los permisos para que cada usuario solo pueda usar ese
context.Se usa k8s.
Yo también pienso parecido a tujuc; creo que introducir k8s por cuenta propia sin alguien con experiencia y operarlo de forma estable sin incidentes implica bastante riesgo.
Pero como mencionas una situación en la que decenas de personas comparten 4 servidores, queda un poco ambiguo;
más que basarse en la cantidad de personas involucradas, si la cantidad de programas de servidor es demasiado grande y la complejidad es alta, sí valdría la pena considerar aprender k8s.
Si yo estuviera en la misma situación que el autor, probablemente iría mejorando el entorno por etapas, más o menos así.
graceful shutdowny refactorizar para que funcionen comostateless. (O pedírselo a los ingenieros)Dockerfiley un archivo dedocker composepara cada servicio, y forzar que, al ejecutarlos con el mismo comando, siempre puedan levantarse sin falta.