Ricerca…


Osservazioni

Di solito ogni contenitore dovrebbe ospitare un processo. Nel caso in cui siano necessari più processi in un contenitore (ad esempio un server SSH per accedere all'istanza del contenitore in esecuzione) è possibile ottenere l'idea di scrivere il proprio script della shell che avvia tali processi. In tal caso, dovresti occuparti della gestione del SIGNAL (ad esempio, reindirizzare un SIGINT catturato ai processi figli del tuo script). Non è proprio quello che vuoi. Una soluzione semplice consiste nell'utilizzare supervisord come processo root dei contenitori che si occupa della gestione SIGNAL e della durata dei processi figli.

Ma tieni presente che questa non è la "via mobile". Per ottenere questo esempio in modalità docker, accedere docker host (la macchina su cui è in esecuzione il contenitore) ed eseguire la docker exec -it container_name /bin/bahs . Questo comando ti apre una shell all'interno del contenitore come farebbe ssh.

Dockerfile + supervisord.conf

Per eseguire più processi, ad esempio un server Web Apache insieme a un daemon SSH all'interno dello stesso contenitore, è possibile utilizzare supervisord .

Crea il tuo file di configurazione supervisord.conf come:

[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"

Quindi creare un file Dockerfile come:

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"]

Quindi puoi costruire la tua immagine:

docker build -t supervisord-test .

Successivamente puoi eseguirlo:

$ 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow