खोज…


टिप्पणियों

आमतौर पर प्रत्येक कंटेनर को एक प्रक्रिया की मेजबानी करनी चाहिए। यदि आपको एक कंटेनर में कई प्रक्रियाओं की आवश्यकता होती है (उदाहरण के लिए आपके चल रहे कंटेनर उदाहरण में प्रवेश करने के लिए एक SSH सर्वर) तो आपको उन शेल स्क्रिप्ट को लिखने का विचार मिल सकता है जो उन प्रक्रियाओं को शुरू करते हैं। उस मामले में आप देखभाल के बारे में लेना पड़ा SIGNAL खुद से निपटने (जैसे पुन: निर्देशित एक पकड़ा SIGINT अपनी स्क्रिप्ट के बच्चे प्रक्रियाओं के लिए)। यह वास्तव में आप क्या चाहते हैं नहीं है। एक सरल उपाय यह है कि supervisord का उपयोग कंटेनर रूट प्रक्रिया के रूप में किया जाए जो कि SIGNAL हैंडलिंग और उसके बच्चे के जीवनकाल की देखभाल करता है।

लेकिन ध्यान रखें, कि यह "docker way" नहीं है। इस उदाहरण को डॉक करने के तरीके में प्राप्त करने के लिए आप docker host (मशीन जिस कंटेनर पर चलती है) में लॉग इन करें और docker exec -it container_name /bin/bahs । यह आदेश आपको कंटेनर के अंदर एक शेल खोलता है जैसा कि ssh करेगा।

डॉकरफाइल + सुपरवाइजर.कॉनफ

कई प्रक्रियाओं को चलाने के लिए जैसे एक Apache वेब सर्वर एक SSH डेमॉन के साथ एक ही कंटेनर के अंदर आप supervisord उपयोग कर सकते हैं।

अपने supervisord.conf निर्माण करें। विन्यास फाइल की तरह:

[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 जैसे:

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

तब आप अपनी छवि बना सकते हैं:

docker build -t supervisord-test .

बाद में आप इसे चला सकते हैं:

$ 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
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow