Buscar..


Observaciones

Por lo general, cada contenedor debe albergar un proceso. En caso de que necesite varios procesos en un contenedor (por ejemplo, un servidor SSH para iniciar sesión en su instancia de contenedor en ejecución), podría tener la idea de escribir su propio script de shell que inicie esos procesos. En ese caso, tuvo que cuidar el manejo de la SIGNAL (p. Ej., Redirigir un SIGINT capturado a los procesos secundarios de su script). Eso no es realmente lo que quieres. Una solución simple es utilizar supervisord como el proceso raíz de los contenedores que se ocupa del manejo de SIGNAL y de la vida útil de sus procesos secundarios.

Pero tenga en cuenta que esta no es la "forma de ventana acoplable". Para lograr este ejemplo de la forma en la ventana acoplable, debe iniciar sesión en el docker host la docker host (la máquina en la que se ejecuta el contenedor) y ejecutar la docker exec -it container_name /bin/bahs . Este comando le abre un shell dentro del contenedor como lo haría ssh.

Dockerfile + supervisord.conf

Para ejecutar múltiples procesos, por ejemplo, un servidor web Apache junto con un demonio SSH dentro del mismo contenedor, puede usar supervisord .

Cree su archivo de configuración supervisord.conf como:

[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D

[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"

Luego crea un Dockerfile como:

FROM ubuntu:16.04
RUN apt-get install -y openssh-server apache2 supervisor
RUN mkdir -p /var/lock/apache2 /var/run/apache2 /var/run/sshd /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]

Entonces puedes construir tu imagen:

docker build -t supervisord-test .

Después puedes ejecutarlo:

$ docker run -p 22 -p 80 -t -i supervisord-test
2016-07-26 13:15:21,101 CRIT Supervisor running as root (no user in config file)
2016-07-26 13:15:21,101 WARN Included extra file     "/etc/supervisor/conf.d/supervisord.conf" during parsing
2016-07-26 13:15:21,112 INFO supervisord started with pid 1
2016-07-26 13:15:21,113 INFO spawned: 'sshd' with pid 6
2016-07-26 13:15:21,115 INFO spawned: 'apache2' with pid 7
...


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow