run remove images hub container linux ubuntu docker linux-containers

linux - remove - Servicios de inicio automático en Docker Container



docker remove container (4)

Una opción que podría usar sería usar un administrador de procesos como Supervisord para ejecutar múltiples procesos. Alguien logró esto con sshd y mongodb: https://github.com/justone/docker-mongodb

Estoy haciendo algunas pruebas iniciales con Docker. Por el momento tengo mis imágenes y puedo poner algunos contenedores en ejecución, con:

docker ps

docker attach container_id e iniciar el servicio apache2.

Luego, desde la consola principal, envío el contenedor a la imagen.

Después de salir del contenedor, si intento iniciar el contenedor o si intento ejecutar un contenedor nuevo desde la imagen confirmada, el servicio siempre se detiene.

¿Cómo se puede crear o reiniciar un contenedor con los servicios iniciados, por ejemplo, apache?



EDITAR: Aprendí mucho sobre Docker desde que originalmente publiqué esta respuesta. "Iniciar servicios automáticamente en contenedores Docker" no es un buen patrón de uso para Docker. En su lugar, use algo como flotas , Kubernetes o incluso Monit / SystemD / Upstart / Init.d / Cron para iniciar automáticamente los servicios que se ejecutan dentro de contenedores Docker.

RESPUESTA ORIGINAL: Si está iniciando el contenedor con el comando /bin/bash , puede hacerlo de la manera descrita aquí: https://.com/a/19872810/2971199

Por lo tanto, si está iniciando el contenedor con el docker run -i -t IMAGE /bin/bash y si desea iniciar automáticamente apache2 cuando se inicia el contenedor, edite /etc/bash.bashrc en el contenedor y agregue /usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf (o cualquiera que sea el comando de inicio de apache2) en una nueva línea al final del archivo.

Guarde los cambios en su imagen y reiníciela con la docker run -i -t IMAGE /bin/bash y encontrará apache2 ejecutándose cuando lo conecte.


Supongo que no puedes. Lo que puedes hacer es crear una imagen usando un Dockerfile y definir una CMD en eso, que se ejecutará cuando se inicie el contenedor. Consulte la documentación del constructor para obtener información básica ( https://docs.docker.com/reference/builder/ ) y consulte Ejecutar un servicio automáticamente en un contenedor acoplable para obtener información sobre cómo mantener el servicio en funcionamiento.

No necesita automatizar esto usando un archivo Docker. También puede crear la imagen mediante una confirmación manual como lo hace, y ejecutarla en la línea de comando. Luego, usted suministra el comando que debería ejecutar (que es exactamente lo que Dockerfile CMD realmente hace). También puede anular la CMD de Dockerfiles de esta manera: solo se ejecutará la última CMD, que es el comando de línea de comando si inicia el contenedor con una. El comando básico docker run -i -t base /bin/bash de la documentación es un ejemplo. Si su comando es demasiado largo, podría crear un guión de conveniencia, por supuesto.