यह कैसे जांचें कि क्या डॉक इंजन और एक डॉक कंटेनर चल रहा है?


103

एक स्क्रिप्ट में, मुझे जाँचने की आवश्यकता है:

a) डूकर इंजन चल रहा है?
b) कंटेनर के नाम को देखते हुए, क्या डॉकटर कंटेनर चल रहा है?

[इस प्रश्न का प्रारंभिक शब्दांकन अस्पष्ट था, कुछ लोगों ने इसे "चेक डॉक इंजन" के रूप में व्याख्या किया, और अन्य ने "चेक डॉकटर कंटेनर" के रूप में।


4
कोई भी डॉक कमांड (docker -v को छोड़कर), जैसे docker ps
ग्लेन पियर्स

docker attach containerName
मटिया डायनासोर

1
या कोशिश docker ps
मटिया डायनासौर

2
sudo systemctl स्टेटस docker
Duk

docker ps----- इस कमांड में केवल
रेनिंग

जवाबों:


109

यदि आप एक विशिष्ट कंटेनर की तलाश कर रहे हैं, तो आप चला सकते हैं:

if [ "$( docker container inspect -f '{{.State.Running}}' $container_name )" == "true" ]; then ...

एक कंटेनर के साथ मुद्दों से बचने के लिए जो क्रैश लूप में है और लगातार यह दिखाते हुए कि यह ऊपर है, Statusफ़ील्ड को चेक करके सुधार किया जा सकता है :

if [ "$( docker container inspect -f '{{.State.Status}}' $container_name )" == "running" ]; then ...

यदि आप जानना चाहते हैं कि क्या dockerd स्थानीय मशीन पर चल रहा है और आपके पास systemd स्थापित है, तो आप चला सकते हैं:

systemctl show --property ActiveState docker

आप डॉकटर से भी जुड़ सकते हैं docker infoया docker versionवे त्रुटि करेंगे यदि डेमॉन अनुपलब्ध है।


कैसे आप एक बैश स्क्रिप्ट के docker inspect …एक ifबयान के अंदर डाल देंगे ?
फ्रांस्वा रोमैन

15
if [ $(docker inspect -f '{{.State.Running}}' $container_name) = "true" ]; then echo yup; else echo nope; fi
बिच

2
मैं docker inspect -f '{{.State.Restarting}}' $container_nameतब से उपयोग करता हूं जब मैं अपना कंटेनर रीस्टार्ट पॉलिसी के साथ शुरू करता हूं, हालांकि यहां "सच" वही है जिससे आप बचना चाहते हैं।
मेवाड़ मेव

4
बाश और डॉकटर दोनों उपरोक्त ifकथन के लिए शिकायत करेंगे , जब कंटेनर नहीं चल रहा है। यह झूठे मामले के लिए अवांछित उच्छ्वास को छुपाता है: if [ "$(docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" = "true" ]; then echo yup; else echo nope; fi
ट्रेवर

1
@MarcoLackovic जैसा लगता है कि आपने ऊपर दिए गए "आपके पास सिस्टमड इंस्टॉल है" को याद किया।
BMCH

48

मैंने उपयोग करना समाप्त कर दिया

docker info

अगर बैकर इंजन चल रहा है तो बैश स्क्रिप्ट के साथ जांच करें।


6
यह उत्तर रेखांकित है। यह क्रॉस-प्लेटफॉर्म है और जल्दी से गुजरता है।
एंडी फ्लेमिंग

2
docker info > /dev/null 2>&1अगर आपको आउटपुट की जरूरत नहीं है
Buggymcbugfix

22

आप का उपयोग कर docker राज्य की जाँच कर सकते हैं: systemctl is-active docker

➜  ~  systemctl is-active docker
active

आप इसका उपयोग इस प्रकार कर सकते हैं:

➜  ~  if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
is alive :)

➜  ~  sudo systemctl stop docker

➜  ~  if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
 * empty response *

इस सवाल का जवाब नहीं है। "कंटेनर नाम के साथ जांच करने के लिए"
jens.klose

हाँ, ऐसा लगता है कि सवाल अस्पष्ट है, यह जांचने के लिए कि क्या कंटेनर आप का उपयोग करना चाहिए docker ps --filter name=pattern, तो आप आउटपुट को केवल इस ध्वज को जोड़ने की स्थिति की जांच करने के लिए प्रारूपित कर सकते हैं:--format {{.Status}}
हर्नान गार्सिया

16

सभी कंटेनरों की सूची बनाएं:

docker container ls -a

ls= सूची
-a= सभी

कॉलम "स्थिति" जांचें


1
मुझे यही चाहिए, क्योंकि यह हर प्लेटफॉर्म पर काम करता है !!
रोलजी

आसान और सरल ... काम किया।
आरएमटी

15

OS X उपयोगकर्ताओं के लिए (Mojave 10.14.3)

यहाँ है कि मैं अपने बैश स्क्रिप्ट में परीक्षण करने के लिए उपयोग करता हूं कि डॉकर चल रहा है या नहीं

# Check if docker is running
if ! docker info >/dev/null 2>&1; then
    echo "Docker does not seem to be running, run it first and retry"
    exit 1
fi

1
मैंने एंटीपैटर्न को हटाने के लिए इसे वापस ले लिया if [[ $? -ne 0 ]]
ट्रिपलए

9

कभी-कभी आपको पूर्ण कंटेनर नाम नहीं पता होता है, इस मामले में यह मेरे लिए काम करता है:

if docker ps | grep -q keyword
then 
    echo "Running!"
else
    echo "Not running!"
    exit 1
fi

हम सभी चल रहे कंटेनर प्रक्रियाओं को सूचीबद्ध करते हैं ( docker ps -aहमें दिखाएंगे कि वे भी नहीं चल रहे हैं, लेकिन यह है कि मुझे क्या ज़रूरत नहीं है), हम एक विशिष्ट शब्द ( grepभाग) की खोज करते हैं और बस असफल हो जाते हैं यदि हमें कम से कम एक चलने वाला कंटेनर नहीं मिला है जिसका नाम हमारे पास है कीवर्ड।



8

कोई भी डॉक कमांड (सिवाय docker -v), जैसे कि docker ps अगर डॉकर चल रहा है, तो आपको कुछ वैध प्रतिक्रिया मिलेगी, अन्यथा आपको एक संदेश मिलेगा जिसमें "क्या आपका डॉकटर डेमन अप एंड रनिंग है?"

आप अपने कार्य प्रबंधक को भी देख सकते हैं।


5

आप इस कमांड से देख सकते हैं systemctl status dockerकि यह डॉकटर की स्थिति को दिखाएगा। यदि आप शुरू करना चाहते हैं तो आप systemctl start dockerइसके बजाय उपयोग कर सकते हैं और systemctlसाथ serviceमें क्रमशः प्रयास भी कर सकते हैं।service docker statusservice docker start


5
यह उत्तर मानता है कि अंतिम-उपयोगकर्ता systemdउनके init के रूप में उपयोग कर रहा है ।
राफेल

systemctl status dockerसही ढंग से शो docker सेवा चल रही है। धन्यवाद।
इमर्सगिच

3

आप यह भी जांच सकते हैं कि कोई विशेष डॉकटर कंटेनर निम्नलिखित कमांड का उपयोग कर रहा है या नहीं।

docker inspect postgres | grep "Running"

यह कमांड जाँच करेगा कि उदाहरण के लिए मेरा पोस्टग्रैज कंटेनर चल रहा है या नहीं और आउटपुट को "रनिंग" के रूप में लौटाएगा : सच

उम्मीद है की यह मदद करेगा।


यही वह है जिसकी तलाश में मैं हूं। और यह काम करता है। (यह अच्छा है जब कुछ वोट करने वाले लोग कहते हैं कि ऐसा क्यों है, इसलिए
नोब्स

मैंने वोट नहीं दिया, लेकिन "त्रुटि: ऐसी कोई वस्तु नहीं: पोस्टग्रेज"
ged

3

Daud:

docker version

अगर डॉक चल रहा है तो आप देखेंगे:

Client: Docker Engine - Community
 Version:           ...
 [omitted]

Server: Docker Engine - Community
 Engine:
  Version:          ...
 [omitted]

अगर डॉक नहीं चल रहा है तो आप देखेंगे:

Client: Docker Engine - Community
 Version:           ...
 [omitted]

Error response from daemon: Bad response from Docker engine

2

यदि अंतर्निहित लक्ष्य "डोकर शुरू होता है तो मैं एक कंटेनर कैसे शुरू कर सकता हूं?"

हम Docker की पुनरारंभ नीति का उपयोग कर सकते हैं

मौजूदा कंटेनर में पुनरारंभ नीति जोड़ने के लिए:

डॉकर: पहले से बनाए गए कंटेनर में पुनरारंभ नीति जोड़ें

उदाहरण:

docker update --restart=always <container>

1

एक मैक पर आप छवि देख सकते हैं:

यहाँ छवि विवरण दर्ज करें

यदि आप docker आइकन पर राइट क्लिक करते हैं तो आप देखते हैं:

यहाँ छवि विवरण दर्ज करें

वैकल्पिक रूप से:

docker ps

तथा

docker run hello-world


0

मैं SSH में कैसे जांच करता हूं।

systemctl

यदि प्रतिक्रिया: डी-बस कनेक्शन प्राप्त करने में विफल: ऑपरेशन की अनुमति नहीं है

इसका डॉकटर या डब्लूएसएल कंटेनर।


0

docker ps -a

आप सभी डॉकटर कंटेनरों को देख सकते हैं कि यह जीवित है या मृत।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.