Docker
एक चल रहे कंटेनर का निरीक्षण
खोज…
वाक्य - विन्यास
- डॉकटर निरीक्षण [विकल्प] कंटेनर | छवि [कंटेनर | छवि ...]
कंटेनर की जानकारी लें
आपके द्वारा चलाए जा सकने वाले कंटेनर के लिए सभी जानकारी प्राप्त करने के लिए:
docker inspect <container>
एक कंटेनर से विशिष्ट जानकारी प्राप्त करें
आप कन्टेनर से एक विशेष जानकारी प्राप्त कर सकते हैं:
docker inspect -f '<format>' <container>
उदाहरण के लिए, आप नेटवर्क सेटिंग्स चलाकर प्राप्त कर सकते हैं:
docker inspect -f '{{ .NetworkSettings }}' <container>
तुम भी सिर्फ आईपी पता प्राप्त कर सकते हैं:
docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container>
पैरामीटर -f का अर्थ है प्रारूप और एक गो खाका प्राप्त होगा जो कि प्रारूप के इनपुट के रूप में अपेक्षित है, लेकिन यह एक सुंदर रिटर्न नहीं लाएगा, इसलिए प्रयास करें:
docker inspect -f '{{ json .NetworkSettings }}' {{containerIdOrName}}
json कीवर्ड रिटर्न JSON के रूप में लाएगा।
तो खत्म करने के लिए, एक छोटी सी टिप आउटपुट JSON को प्रारूपित करने के लिए वहां अजगर का उपयोग करने के लिए है:
docker inspect -f '{{ json .NetworkSettings }}' <container> | python -mjson.tool
और वोइला, आप डॉकटर निरीक्षण पर कुछ भी क्वेरी कर सकते हैं और इसे अपने टर्मिनल में सुंदर बना सकते हैं।
आदेश आउटपुट docker inspect
करने में मदद करने के लिए " jq " नामक एक उपयोगिता का उपयोग करना भी संभव है।
docker inspect -f '{{ json .NetworkSettings }}' aa1 | jq [.Gateway]
उपरोक्त कमांड निम्नलिखित आउटपुट लौटाएगा:
[
"172.17.0.1"
]
यह आउटपुट वास्तव में एक तत्व से युक्त एक सूची है। कभी-कभी, docker inspect
कई तत्वों की एक सूची प्रदर्शित करता है, और आप एक विशिष्ट तत्व को संदर्भित करना चाह सकते हैं। उदाहरण के लिए, यदि Config.Env
में कई तत्व हैं, तो आप इस सूची के पहले तत्व को index
का उपयोग करके देख सकते हैं:
docker inspect --format '{{ index (index .Config.Env) 0 }}' <container>
पहला तत्व शून्य पर अनुक्रमित है, जिसका अर्थ है कि इस सूची का दूसरा तत्व सूचकांक 1
:
docker inspect --format '{{ index (index .Config.Env) 1 }}' <container>
len
का उपयोग करके सूची के तत्वों की संख्या प्राप्त करना संभव है:
docker inspect --format ‘{{ len .Config.Env }}’ <container>
और नकारात्मक संख्याओं का उपयोग करते हुए, सूची के अंतिम तत्व को संदर्भित करना संभव है:
docker inspect –format “{{ index .Config.Cmd $[$(docker inspect –format ‘{{ len .Config.Cmd }}’ <container>)-1]}}” <container>
कुछ docker inspect
सूचना कुंजी के एक शब्दकोश के रूप में आते हैं: मूल्य, यहाँ एक docker inspect
एक्स्ट्रेक्ट है जो एक जीस / स्पॉट रनिंग कंटेनर docker inspect
।
"Config": { "Hostname": "8255f4804dde", "Domainname": "", "User": "spotify", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "DISPLAY=unix:0", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HOME=/home/spotify" ], "Cmd": [ "-stylesheet=/home/spotify/spotify-override.css" ], "Image": "jess/spotify", "Volumes": null, "WorkingDir": "/home/spotify", "Entrypoint": [ "spotify" ], "OnBuild": null, "Labels": {} },
इसलिए मुझे पूरे कॉन्फिगरेशन सेक्शन के मान मिलते हैं
docker inspect -f '{{.Config}}' 825
{8255f4804dde spotify false false false map[] false false false [DISPLAY=unix:0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/home/spotify] [-stylesheet=/home/spotify/spotify-override.css] false jess/spotify map[] /home/spotify [spotify] false [] map[] }
लेकिन यह भी एक ही क्षेत्र, config.Image के मूल्य की तरह
docker inspect -f '{{index (.Config) "Image" }}' 825
jess/spotify
या config.Cmd
docker inspect -f '{{.Config.Cmd}}' 825
[-stylesheet=/home/spotify/spotify-override.css]
एक छवि का निरीक्षण करें
एक छवि का निरीक्षण करने के लिए, आप रिपॉजिटरी और टैग से मिलकर छवि आईडी या छवि नाम का उपयोग कर सकते हैं। कहो, आपके पास CentOS 6 बेस इमेज है:
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos6 cf2c3ece5e41 2 weeks ago 194.6 MB
इस स्थिति में आप निम्न में से कोई भी चला सकते हैं:
-
➜ ~ docker inspect cf2c3ece5e41
-
➜ ~ docker inspect centos:centos6
ये दोनों कमांड आपको JSON सरणी में उपलब्ध सभी जानकारी देंगे:
[
{
"Id": "sha256:cf2c3ece5e418fd063bfad5e7e8d083182195152f90aac3a5ca4dbfbf6a1fc2a",
"RepoTags": [
"centos:centos6"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2016-07-01T22:34:39.970264448Z",
"Container": "b355fe9a01a8f95072e4406763138c5ad9ca0a50dbb0ce07387ba905817d6702",
"ContainerConfig": {
"Hostname": "68a1f3cfce80",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) CMD [\"/bin/bash\"]"
],
"Image": "sha256:cdbcc7980b002dc19b4d5b6ac450993c478927f673339b4e6893647fe2158fa7",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"build-date": "20160701",
"license": "GPLv2",
"name": "CentOS Base Image",
"vendor": "CentOS"
}
},
"DockerVersion": "1.10.3",
"Author": "https://github.com/CentOS/sig-cloud-instance-images",
"Config": {
"Hostname": "68a1f3cfce80",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Image": "sha256:cdbcc7980b002dc19b4d5b6ac450993c478927f673339b4e6893647fe2158fa7",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"build-date": "20160701",
"license": "GPLv2",
"name": "CentOS Base Image",
"vendor": "CentOS"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 194606575,
"VirtualSize": 194606575,
"GraphDriver": {
"Name": "aufs",
"Data": null
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:2714f4a6cdee9d4c987fef019608a4f61f1cda7ccf423aeb8d7d89f745c58b18"
]
}
}
]
मुद्रण विशिष्ट informations
docker inspect
--format
विकल्प के माध्यम से Go Templates inspect
समर्थन करता है। यह लिपियों / sed / grep पारंपरिक साधनों का सहारा लिए बिना, लिपियों में बेहतर एकीकरण की अनुमति देता है।
कंटेनर आंतरिक IP प्रिंट करें :
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 7786807d8084
यह लोड-बैलेंसर ऑटो-कॉन्फ़िगरेशन के प्रत्यक्ष नेटवर्क एक्सेस के लिए उपयोगी है।
कंटेनर init पीआईडी प्रिंट करें :
docker inspect --format '{{ .State.Pid }}' 7786807d8084
strace
जैसे उपकरण /proc
या उपकरण के माध्यम से गहन निरीक्षण के लिए यह उपयोगी है।
उन्नत स्वरूपण :
docker inspect --format 'Container {{ .Name }} listens on {{ .NetworkSettings.IPAddress }}:{{ range $index, $elem := .Config.ExposedPorts }}{{ $index }}{{ end }}' 5765847de886 7786807d8084
उत्पादन होगा:
Container /redis listens on 172.17.0.3:6379/tcp
Container /api listens on 172.17.0.2:4000/tcp
कंटेनर लॉग का डिबगिंग का उपयोग करते हुए निरीक्षण करें
कंटेनर लॉग को डीबग करने के लिए docker inspect
कमांड का उपयोग किया जा सकता है।
कंटेनर को डिबग करने के लिए कंटेनर के स्टडआउट और स्टैडर को चेक किया जा सकता है, जिसका स्थान docker inspect
का उपयोग करके प्राप्त किया जा सकता है।
आदेश: docker inspect <container-id> | grep Source
यह कंटेनरों के स्थान को stdout और stderr देता है।
एक चल रहे कंटेनर के stdout / stderr की जाँच करना
docker logs --follow <containerid>
यह रनिंग कंटेनर के आउटपुट को पूंछता है। यह उपयोगी है यदि आपने डॉकटर डेमन पर लॉगिंग ड्राइवर स्थापित नहीं किया है।