खोज…


वाक्य - विन्यास

  • डॉकटर आँकड़े [विकल्प] [कंटेनर ...]
  • डॉकटर लॉग्स [विकल्प] कंटेनर
  • डॉकटर शीर्ष [विकल्प] कंटेनर [पीएस विकल्प]

एक चल रहे कंटेनर में प्रवेश करना

एक कंटेनर में संचालन को निष्पादित करने के लिए, docker exec कमांड का उपयोग करें। कभी-कभी इसे "कंटेनर में प्रवेश" कहा जाता है क्योंकि सभी कमांड कंटेनर के अंदर निष्पादित होते हैं।

docker exec -it container_id bash

या

docker exec -it container_id /bin/sh

और अब आपके पास आपके चलने वाले कंटेनर में एक शेल है। उदाहरण के लिए, निर्देशिका में फ़ाइलों को सूचीबद्ध करें और फिर कंटेनर छोड़ दें:

docker exec container_id ls -la

आप एक विशिष्ट उपयोगकर्ता के साथ कंटेनर में प्रवेश करने के लिए -u flag का उपयोग कर सकते हैं, जैसे uid=1013 , gid=1023

docker exec -it -u 1013:1023 container_id ls -la

यूआईडी और जीआईडी कंटेनर में मौजूद नहीं है, लेकिन कमांड में त्रुटियां हो सकती हैं। यदि आप एक कंटेनर लॉन्च करना चाहते हैं और तुरंत कुछ जांचने के लिए अंदर प्रवेश करते हैं, तो आप कर सकते हैं

docker run...; docker exec -it $(docker ps -lq) bash

कमांड docker ps -lq केवल आखिरी (एल-इन- -lq ) कंटेनर की आईडी को आउटपुट करता है। (यह आप अपने कंटेनर में उपलब्ध दुभाषिया के रूप में बैश है, आप श या zsh या किसी अन्य हो सकता है)

संसाधन उपयोग की निगरानी करना

दुर्व्यवहार अनुप्रयोगों को खोजने के लिए सिस्टम संसाधन उपयोग का निरीक्षण एक कुशल तरीका है। यह उदाहरण कंटेनरों के लिए पारंपरिक top कमांड के बराबर है:

docker stats

विशिष्ट कंटेनरों के आंकड़ों का पालन करने के लिए, उन्हें कमांड लाइन पर सूचीबद्ध करें:

docker stats 7786807d8084 7786807d8085

Docker आँकड़े निम्नलिखित जानकारी प्रदर्शित करता है:

CONTAINER     CPU %   MEM USAGE / LIMIT   MEM %    NET I/O               BLOCK I/O
7786807d8084  0.65%   1.33 GB / 3.95 GB   33.67%   142.2 MB / 57.79 MB   46.32 MB / 0 B

डिफ़ॉल्ट रूप से docker stats कंटेनरों की आईडी प्रदर्शित करते हैं, और यह बहुत उपयोगी नहीं है, यदि आपका कंटेनर के नाम को प्रदर्शित करना पसंद करता है, तो बस करें

docker stats $(docker ps --format '{{.Names}}')

एक कंटेनर में निगरानी की प्रक्रिया

लाइव रनिंग एप्लिकेशन पर किसी समस्या को कम करने के लिए सिस्टम संसाधन उपयोग का निरीक्षण एक कुशल तरीका है। यह उदाहरण कंटेनरों के लिए पारंपरिक ps कमांड के बराबर है।

docker top 7786807d8084

आउटपुट स्वरूप को फ़िल्टर करने के लिए, कमांड लाइन पर ps विकल्प जोड़ें:

docker top 7786807d8084 faux

या, रूट के रूप में चलने वाली प्रक्रियाओं की सूची प्राप्त करने के लिए, जो एक संभावित हानिकारक अभ्यास है:

docker top 7786807d8084 -u root

docker top कमांड विशेष रूप से उपयोगी साबित होती है जब शेल या ps कमांड के बिना न्यूनतर कंटेनरों का निवारण किया जाता है।

एक चल रहे कंटेनर में संलग्न करें

'कंटेनर में संलग्न करना' इस संदर्भ में एक टर्मिनल सत्र शुरू करने का कार्य है कि कंटेनर (और उसमें कोई भी कार्यक्रम) चल रहा है। यह मुख्य रूप से डिबगिंग उद्देश्यों के लिए उपयोग किया जाता है, लेकिन कंटेनर के भीतर चलने वाले कार्यक्रमों के लिए विशिष्ट डेटा को पारित करने की आवश्यकता होने पर भी इसकी आवश्यकता हो सकती है।

इसे करने के लिए attach कमांड का उपयोग किया जाता है। इसका यह सिंटैक्स है:

docker attach <container>

<container> कंटेनर आईडी या कंटेनर का नाम हो सकता है। उदाहरण के लिए:

docker attach c8a9cf1a1fa8

या:

docker attach graceful_hopper

आपको अपने उपयोगकर्ता के आधार पर और ऊपर दिए गए आदेशों के आधार पर उपरोक्त आदेशों को sudo करने की आवश्यकता हो सकती है।

नोट: अटैच केवल एक बार में एक सिंगल सेशन को कंटेनर में संलग्न करने की अनुमति देता है।

चेतावनी: सभी कीबोर्ड इनपुट कंटेनर में भेजे जाएंगे। Ctrl-c मारना आपके कंटेनर को मार देगा।

एक संलग्न कंटेनर से अलग करने के लिए, क्रमिक रूप से Ctrl-p तब Ctrl-q मारा

एक कंटेनर में कई शेल सत्रों को संलग्न करने के लिए, या बस एक विकल्प के रूप में, आप exec उपयोग कर सकते हैं। कंटेनर आईडी का उपयोग करना:

docker exec -i -t c8a9cf1a1fa8 /bin/bash

कंटेनर के नाम का उपयोग करना:

docker exec -i -t graceful_hopper /bin/bash

exec एक कंटेनर के भीतर एक कार्यक्रम चलाएगा, इस मामले में /bin/bash (एक शेल, संभवतः एक कंटेनर है)। -i एक इंटरैक्टिव सत्र जबकि इंगित करता है, -t आबंटित करता है एक छद्म TTY।

नोट: अटैचमेंट के विपरीत, Ctrl-c मारना केवल निष्पादन की कमांड को अंतःक्रियात्मक रूप से चलाने पर समाप्त होगा।

लॉग मुद्रण

लॉग के बाद लाइव चल रहे एप्लिकेशन को डीबग करने का कम घुसपैठ वाला तरीका है। यह उदाहरण कंटेनर 7786807d8084 पर पारंपरिक tail -f some-application.log के व्यवहार को पुन: 7786807d8084

docker logs --follow --tail 10 7786807d8084

यह कमांड मूल रूप से कंटेनर प्रक्रिया के मानक आउटपुट (पीआईडी 1 के साथ प्रक्रिया) को दर्शाता है।

यदि आपके लॉग में मूल रूप से टाइमस्टैम्पिंग शामिल नहीं है, तो आप --timestamps ध्वज जोड़ सकते हैं।

एक बंद कंटेनर के लॉग को देखना संभव है, या तो

  • docker run ... ; docker logs $(docker ps -lq) साथ असफल कंटेनर शुरू करें docker run ... ; docker logs $(docker ps -lq)

  • कंटेनर आईडी या नाम के साथ खोजें

docker ps -a

और फिर

docker logs container-id या

docker logs containername

के रूप में यह एक बंद कंटेनर के लॉग को देखने के लिए संभव है

डॉकर कंटेनर प्रक्रिया डिबगिंग

डॉकर एक प्रक्रिया को चलाने के लिए सिर्फ एक फैंसी तरीका है, वर्चुअल मशीन नहीं। इसलिए, "कंटेनर में" एक प्रक्रिया को डिबग करना भी "होस्ट पर" संभव है, केवल एक अनुमति के रूप में चल रहे कंटेनर प्रक्रिया की जांच करके उपयोगकर्ता उन होस्ट (जैसे रूट) पर उन प्रक्रियाओं का निरीक्षण करने के लिए उपयुक्त अनुमति देता है। उदाहरण के लिए, साधारण ps को रूट के रूप में चलाकर मेजबान पर हर "कंटेनर प्रक्रिया" को सूचीबद्ध करना संभव है:

sudo ps aux

वर्तमान में चलने वाले डॉकटर कंटेनरों को आउटपुट में सूचीबद्ध किया जाएगा।

एक कंटेनर में चल रही प्रक्रिया को डीबग करने के लिए अनुप्रयोग विकास के दौरान यह उपयोगी हो सकता है। उपयुक्त अनुमति वाले उपयोगकर्ता के रूप में, विशिष्ट डिबगिंग उपयोगिताओं का उपयोग कंटेनर प्रक्रिया पर किया जा सकता है, जैसे स्ट्रेस, लेट्रेस, जीएसबीबी, आदि।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow