Docker
एक कंटेनर उदाहरण में कई प्रक्रियाएँ
खोज…
टिप्पणियों
आमतौर पर प्रत्येक कंटेनर को एक प्रक्रिया की मेजबानी करनी चाहिए। यदि आपको एक कंटेनर में कई प्रक्रियाओं की आवश्यकता होती है (उदाहरण के लिए आपके चल रहे कंटेनर उदाहरण में प्रवेश करने के लिए एक 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
...