Ubuntu 12.04 पर बूट डब्ल्यू / अपस्टार्ट स्क्रिप्ट पर डॉकटर कंटेनर शुरू क्यों नहीं होता है?


15

उबंटू 12.04 और डोकर 0.8.1 पर चलने वाले लाइनोड वीपीएस पर डॉकर ऑटो-स्टार्ट के निर्देशों का उपयोग करते हुए , निर्दिष्ट कंटेनर रिबूट पर शुरू नहीं होता है।

एक बार बूट करने के बाद, मैं सक्षम हूं

~$ sudo start [service-name]

और सब कुछ योजना के अनुसार होता है, लेकिन मैं एक रिबूट के बाद पुनः आरंभ करने के लिए कंटेनर को भी पसंद करूंगा।

ट्यूटोरियल में स्क्रिप्ट रिबूट को संभालने के लिए डिज़ाइन नहीं किया गया है?

/ etc / डिफ़ॉल्ट / docker फ़ाइल में एक पंक्ति है:

DOCKER_OPTS="-r=false"

/etc/init/service-name.conf docker पेज से सीधा है:

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    # Wait for docker to finish starting up first.
    FILE=/var/run/docker.sock
    while [ ! -e $FILE ] ; do
        inotifywait -t 2 -e create $(dirname $FILE)
    done
    /usr/bin/docker start -a db5e61a9afa8
end script

2
आपके upstart स्क्रिप्ट की सामग्री क्या है और /etc/default/docker?
ब्रूनो परेरा

जवाबों:


6

पिछले कुछ महीनों में, डॉक शुरू होने का इंतजार करने के लिए लूप को हटाने के लिए ट्यूटोरियल में अपस्टार्ट स्क्रिप्ट को बदल दिया गया था। मैंने अपनी अपस्टार्ट स्क्रिप्ट्स से लूप को हटा दिया और मेरे कंटेनर अब रिबूट के बाद सही तरीके से रीस्टार्ट हो गए।

मेरी /etc/init/service-name.conf स्क्रिप्ट अब इस तरह दिखती है:

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    /usr/bin/docker start -a db5e61a9afa8
end script

मुझे यकीन नहीं है कि उस पाश के साथ क्या गलत था हो सकता है कि यह मेरे सिस्टम पर गलत फ़ाइल की ओर इशारा कर रहा था, हालांकि मैंने डिफ़ॉल्ट डॉक इंस्टॉल में कोई बदलाव नहीं किया। अभी के लिए, मैं बस कुछ जटिल काम के बजाय फिक्स शामिल कोड को हटाने से खुश हूं।


यह एक संकेत (docker-start) का उत्सर्जन करने के लिए docker जॉब को बदलने के लिए अधिक upstart-ish होगा और उस सिग्नल को शुरू करने के लिए कंटेनर जॉब को ट्रिगर करेगा।
18

आप आदेश जारी करके कंटेनर को इस तरह नहीं रोक सकते stop service-name। मैं इस मुद्दे का सामना कर रहा हूं :(
अहमद अल हफौद

3

Ubuntu 14.04 का उपयोग करने वाले किसी के लिए भी कर्ता का स्वाद प्राप्त करें। आपको बस "docker.io" पर प्रतीक्षा करने के लिए स्टार्टअप स्क्रिप्ट को बदलने की आवश्यकता है, न कि "docker" की तरह:

description "Docker startup script for yum_repo"
author "me"
start on filesystem and started docker.io
stop on runlevel [!2345]
respawn
script
  /usr/local/bin/docker start -a yum_repo_run
end script

1

मैं मेजबान के रूप में उबंटू 13.10 का उपयोग कर रहा हूं और मेरे पास एक ही मुद्दा था। मैंने पाया कि docker एक doc के लिए rc स्क्रिप्ट स्थापित करता है /etc/init.d/dockerऔर उसी समय /etc/init/docker.conf पर एक upstart स्क्रिप्ट स्थापित करता है। मुझे बस /etc/init.d/dockerइस मुद्दे को दूर करने के लिए आर सी स्क्रिप्ट को हटाना पड़ा ।

आशा है कि यह आपके लिए भी काम करेगा।


अफसोस की बात है, यह एक मेरे लिए काम नहीं किया।
जॉडी

0
DOCKER_OPTS="-r=false"

इसका मतलब है: पहले से चल रहे कंटेनरों को पुनः आरंभ न करें।

-rविकल्प निकालें या इसे सही पर बदलें।


2
सही है, लेकिन बिंदु डस्टेम डेमॉन नहीं अपस्टार्ट हैंडल कंटेनर पुनरारंभ करना है। यदि डॉकटर डेमॉन रिबूट पर कंटेनर शुरू करता है, तो प्रक्रिया को ऊपर की ओर से प्रबंधित नहीं किया जा सकता है।
जोड़ी

0

/var/run/docker.sockएक सॉकेट है जिससे आपको -Sअस्तित्व के लिए परीक्षण करते समय उपयोग करने की आवश्यकता होती है:

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.