Presta atención porque en esta división vas a encontrar la solución que buscas.Esta crónica fue aprobado por nuestros expertos para asegurar la calidad y veracidad de nuestro contenido.
Cuando tu lo hagas docker run
con bash
como comando, el sistema de inicio (por ejemplo, SystemD) no se inicia (ni tampoco su secuencia de comandos de inicio, ya que el comando que pasa anula el CMD
en el Dockerfile). Intenta cambiar el comando que usas para /sbin/init
inicie el contenedor en modo daemon con -d
y luego mire alrededor en un caparazón usando docker exec -it
.
Docker está diseñado en torno a la idea de un único servicio/proceso por contenedor. Aunque definitivamente admite la ejecución de múltiples procesos en un contenedor y de ninguna manera le impide hacerlo, eventualmente se encontrará con áreas en las que múltiples servicios en un contenedor no se corresponden con lo que Docker o las herramientas externas esperan. Cosas como pasar a la escala de servicios o usar Docker swarm entre hosts solo admiten el concepto de un servicio por contenedor.
Docker Compose le permite componer varios contenedores en una sola definición, lo que significa que puede usar más contenedores preconstruidos estándar (httpd
, mariadb
) en lugar de construir uno propio. Las definiciones de composición se asignan a los servicios de Docker Swarm con bastante facilidad. Consulte también Kubernetes y Marathon/Mesos para administrar grupos de contenedores como servicio.
Gestión de procesos en Docker
Es posible ejecutar systemd en un contenedor pero requiere --privileged
acceso al host y al /sys/fs/cgroup
volumen montado, por lo que puede no ser la mejor opción para la mayoría de los casos de uso.
El s6-overlay
El proyecto proporciona un sistema de gestión de procesos más amigable con Docker usando s6.
Es bastante raro que realmente necesite acceso ssh a un contenedor, pero si ese es un requisito difícil, entonces tendrá que construir sus propios contenedores y usar un administrador de procesos.
Puede evitar ejecutar un daemon systemd dentro de un contenedor docker por completo. Incluso puede evitar escribir un script start.sh especial; ese es otro beneficio cuando se usa el script docker-systemctl-replacement.
El docker systemctl.py puede analizar los archivos *.service normales para saber cómo iniciar y detener los servicios. Puede registrarlo como el CMD de una imagen, en cuyo caso buscará todos los servicios habilitados para systemctl, que se iniciarán y detendrán en el orden correcto.
El conjunto de pruebas actual incluye casos de prueba para la pila LAMP, incluidos centos, por lo que debería funcionar bien específicamente en su configuración.
Si guardas alguna sospecha o forma de mejorar nuestro escrito puedes ejecutar un exégesis y con mucho gusto lo ojearemos.