एंड्रॉयड

डॉकटर कन्टेनर से कैसे कनेक्ट करें

Inova संघट्टन कार्यक्रम के बारे में और जानें

Inova संघट्टन कार्यक्रम के बारे में और जानें

विषयसूची:

Anonim

जब आप कंटेनर के अंदर क्या हो रहा है, यह देखना चाहते हैं, तो एक रनिंग डॉकटर कंटेनर से कनेक्ट करना सहायक होता है। यदि डॉकर कंटेनर अपेक्षा के अनुरूप काम नहीं करता है, तो आप कंटेनर को संलग्न कर सकते हैं या कंटेनर को एक शेल प्राप्त कर सकते हैं और ps या top जैसे कमांड चला सकते हैं। आप कंटेनर में भी प्रवेश कर सकते हैं, नए पैकेज स्थापित कर सकते हैं, और उसमें से एक नई डोकर छवि बना सकते हैं।

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

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

हालांकि एक कंटेनर में कई प्रक्रियाओं को चलाना संभव है, अधिकांश डॉकटर कंटेनर केवल एक ही प्रक्रिया चला रहे हैं। कंटेनर शुरू करते समय निष्पादित होने वाली कमांड को ENTRYPOINT और / या RUN निर्देश का उपयोग करके निर्दिष्ट किया जाता है।

docker attach कमांड आपको अपने टर्मिनल को रनिंग कंटेनर में संलग्न करने की अनुमति देता है। यह उपयोगी है जब आप यह देखना चाहते हैं कि वास्तविक समय में मानक आउटपुट में क्या लिखा गया है, या प्रक्रिया को अंतःक्रियात्मक रूप से नियंत्रित करना है।

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

docker container run --name my_nginx -d -p 8080:80 nginx

The -p 8080:80 विकल्प होस्ट मशीन पर पोर्ट 80 के लिए पोर्ट के 8080 को बांधने के लिए डॉकर को बताता है।

"My_nginx" कंटेनर सुनिश्चित करने के लिए कंटेनरों की सूची बनाएं:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e1c4974a8d8 nginx "nginx -g 'daemon of…" 3 minutes ago Up 2 seconds 0.0.0.0:8080->80/tcp my_nginx

कंटेनर की आईडी या नाम का उपयोग करके कंटेनर में संलग्न करें:

docker container attach my_nginx

जब आप कंटेनर चलाते हैं, तो nginx छवि का डिफ़ॉल्ट कमांड CMD सेट होता है। जब आप attach कमांड चलाते हैं तो आपका टर्मिनल nginx प्रक्रिया से nginx जाता है।

अपने ब्राउज़र में 127.0.0.1:8080 खोलें और आप वास्तविक समय में नेगनेक्स प्रक्रिया का आउटपुट देख सकते हैं।

192.168.33.1 - - "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-" 192.168.33.1 - - "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.33.71:8080/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36" "-"

कंटेनर लॉग्स तक पहुँच प्राप्त करने के लिए आपको docker logs कमांड का उपयोग करना चाहिए।

कंटेनर से बिना रुके उसे अलग करने के लिए, CTRL-p CTRL-q कुंजी संयोजन का उपयोग करें। CTRL-c दबाने से कंटेनर बंद हो जाता है।

यदि चल रही प्रक्रियाएँ आप इनपुट को स्वीकार कर रहे हैं, तो आप उसे निर्देश भेज सकते हैं।

एक कंटेनर में एक शेल प्राप्त करें

docker exec कमांड आपको रनिंग कंटेनर के अंदर कमांड चलाने की अनुमति देता है।

यह देखने के लिए कि exec कमांड कैसे काम करता है और कंटेनर शेल में प्रवेश करने के लिए इसका उपयोग कैसे किया जा सकता है, सबसे पहले, एक नया कंटेनर शुरू करें। हम आधिकारिक MySQL छवि का उपयोग करेंगे:

docker container run --name my_mysql -d mysql

यह "my_mysql" नामक एक कंटेनर बनाएगा।

कंटेनर के अंदर एक कमांड निष्पादित करने के लिए निम्नलिखित कमांड चलाएँ:

docker container exec -it my_mysql ls /var

-i विकल्प इंटरैक्टिव के लिए खड़ा है, और यह एक छद्म TTY डिवाइस आवंटित करने के लिए डॉकर को बताता है। ls कमांड कंटेनर के अंदर सभी फाइलों और निर्देशिकाओं को सूचीबद्ध करेगा /var निर्देशिका:

backups cache lib local lock log mail opt run spool tmp

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

नीचे दिया गया कमांड कंटेनर के अंदर एक नया बैश सत्र बनाएगा:

docker container exec -it my_mysql /bin/bash

आपका कमांड प्रॉम्प्ट बदल जाएगा, यह दर्शाता है कि अब आप कंटेनर शेल पर काम कर रहे हैं।

यहां से, आप उसी तरह कमांड चला सकते हैं जैसे आप किसी अन्य लिनक्स सर्वर पर करते हैं। उदाहरण के लिए, वर्तमान पर्यावरण चर प्रकार की सूची पाने के लिए env :

env

आउटपुट कुछ इस तरह दिखाई देगा:

HOSTNAME=e0214d97e0fe MYSQL_ROOT_PASSWORD=my-secret-pw PWD=/ HOME=/root MYSQL_MAJOR=8.0 GOSU_VERSION=1.7 MYSQL_VERSION=8.0.17-1debian9 TERM=xterm SHLVL=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin _=/usr/bin/env

निष्कर्ष

docker exec और docker attach कमांड्स आपको रनिंग कंटेनर से कनेक्ट करने की अनुमति देते हैं। एक कंटेनर में एक इंटरैक्टिव शेल प्राप्त करने के लिए, एक नया शेल सत्र शुरू करने के लिए exec कमांड का उपयोग करें। attach कमांड आपके टर्मिनल को रनिंग कंटेनर में देता है।

डाक में काम करनेवाला मज़दूर