Sök…


Anmärkningar

Vanligtvis bör varje behållare vara värd för en process. Om du behöver flera processer i en behållare (t.ex. en SSH-server för att logga in på din kända containerinstans) kan du få idén att skriva ditt eget skalskript som startar dessa processer. I så fall var du tvungen att ta hand om SIGNAL hanteringen själv (t.ex. omdirigera en fångad SIGINT till barnets processer i ditt manus). Det är egentligen inte det du vill ha. En enkel lösning är att använda supervisord som behållarens rotprocess som tar hand om SIGNAL hantering och dess barns processer livstid.

Men kom ihåg att detta inte är "dockningsvägen". För att uppnå detta exempel på docker-sättet loggar du in i docker host (maskinen som containern körs på) och kör docker exec -it container_name /bin/bahs . Detta kommando öppnar ett skal inuti behållaren som ssh skulle göra.

Dockerfile + supervord.conf

För att köra flera processer, t.ex. en Apache-webbserver tillsammans med en SSH-demon i samma behållare, kan du använda supervisord .

Skapa din supervisord.conf konfigurationsfil som:

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

Dockerfile en Dockerfile som:

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

Då kan du bygga din bild:

docker build -t supervisord-test .

Efteråt kan du köra det:

$ 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow