एंड्रॉयड

उदाहरण के साथ डॉकर रन कमांड

डोकर ट्यूटोरियल: डोकर भागो कमान की मूल बातें

डोकर ट्यूटोरियल: डोकर भागो कमान की मूल बातें

विषयसूची:

Anonim

डॉकर एक ऐसा मंच है जो आपको पोर्टेबल, आत्मनिर्भर कंटेनरों के रूप में अनुप्रयोगों को विकसित करने, परीक्षण करने और तैनात करने की अनुमति देता है जो लगभग कहीं भी चलते हैं।

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

डॉकर रन कमांड

docker run कमांड निम्न रूप लेता है:

docker run IMAGE

जिस छवि से कंटेनर बनाया जाना चाहिए उसका नाम docker run कमांड के लिए एकमात्र आवश्यक तर्क है। यदि छवि स्थानीय प्रणाली पर मौजूद नहीं है, तो इसे रजिस्ट्री से खींच लिया जाता है।

यदि कोई कमांड निर्दिष्ट नहीं है, तो डॉकरीफाइल के CMD या ENTRYPOINT निर्देशों में निर्दिष्ट कमांड को कंटेनर चलाते समय निष्पादित किया जाता है।

संस्करण १.१३ से शुरू होकर, डॉकर सीएलआई का पुनर्गठन किया गया है, और सभी कमांडों को उस ऑब्जेक्ट के तहत समूहीकृत किया गया है जिसके साथ वे बातचीत कर रहे हैं।

चूंकि run कमांड कंटेनरों के साथ इंटरैक्ट करता है, इसलिए अब यह docker container का एक उपकमांड है। नए कमांड का सिंटैक्स निम्नानुसार है:

docker container run IMAGE

पुराना, प्री 1.13 सिंटैक्स अभी भी समर्थित है। हुड के तहत, docker run कमांड एक डॉक टू docker container run । उपयोगकर्ताओं को नए कमांड सिंटैक्स का उपयोग करने के लिए प्रोत्साहित किया जाता है।

डॉकर डॉक्यूमेंटेशन पेज पर सभी docker container run ऑप्शन की एक सूची मिल सकती है।

अग्रभूमि में कंटेनर चलाएँ

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

docker container run nginx

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

कंटेनर को रोकने के लिए, CTRL+C दबाकर चल रहे Nginx प्रक्रिया को समाप्त करें।

कंटेनर को अलग मोड में चलाएँ

टर्मिनल सत्र से बाहर निकलने पर कंटेनर को चालू रखने के लिए, इसे अलग मोड में शुरू करें। यह पृष्ठभूमि में एक लिनक्स प्रक्रिया चलाने के समान है।

एक अलग कंटेनर शुरू करने के लिए -d विकल्प का उपयोग करें:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

अलग किए गए कंटेनर रूट प्रक्रिया समाप्त होने पर बंद हो जाएगा।

आप docker container ls कमांड का उपयोग करके रनिंग कंटेनरों को सूचीबद्ध कर सकते हैं।

अलग टर्मिनल रूट प्रक्रिया के लिए अपने टर्मिनल को संलग्न करने के लिए, docker container attach कमांड का उपयोग करें।

बाहर निकलने के बाद कंटेनर निकालें

डिफ़ॉल्ट रूप से, जब कंटेनर बाहर निकलता है, तो इसकी फाइल सिस्टम मेजबान सिस्टम पर बनी रहती है।

--rm विकल्प बताता है कि जब यह स्वचालित रूप से बाहर निकलता है तो कंटेनर को हटाने के लिए --rm docker run कमांड:

docker container run --rm nginx

कंटेनर से बाहर निकलने के बाद कंटेनर की फाइल सिस्टम को साफ करने के लिए नगीनक्स छवि सबसे अच्छा उदाहरण नहीं हो सकती है। यह विकल्प आमतौर पर अग्रभूमि कंटेनरों पर उपयोग किया जाता है जो परीक्षण या डेटाबेस बैकअप जैसे अल्पकालिक कार्य करते हैं।

कंटेनर का नाम सेट करें

डॉकर में, प्रत्येक कंटेनर को उसके UUID और नाम से पहचाना जाता है। डिफ़ॉल्ट रूप से, यदि स्पष्ट रूप से सेट नहीं किया गया है, तो कंटेनर का नाम स्वचालित रूप से डॉकर डेमन द्वारा उत्पन्न होता है।

कंटेनर को कस्टम नाम निर्दिष्ट करने के लिए --name विकल्प का उपयोग करें:

docker container run -d --name my_nginx nginx

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

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

सभी कंटेनरों को सूचीबद्ध करने और उनके नाम देखने के लिए docker container ls -a चलाएँ:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

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

कंटेनर पोर्ट का प्रकाशन

डिफ़ॉल्ट रूप से, यदि कोई पोर्ट प्रकाशित नहीं होता है, तो कंटेनर में चलने वाली प्रक्रिया केवल कंटेनर के अंदर से ही सुलभ होती है।

प्रकाशन पोर्ट का मतलब है कि कंटेनर पोर्ट को होस्ट मशीन पोर्ट से मैप करना ताकि पोर्ट डॉकर के बाहर सेवाओं के लिए उपलब्ध हों।

पोर्ट का उपयोग करने के लिए -p विकल्प निम्नानुसार प्रकाशित करें:

-p host_ip:host_port:container_port/protocol

  • यदि कोई host_ip निर्दिष्ट नहीं है, तो यह 0.0.0.0 डिफॉल्ट करता है। यदि कोई protocol निर्दिष्ट नहीं है, तो यह TCP के लिए डिफॉल्ट करता है। कई पोर्ट प्रकाशित करें, कई -p विकल्पों का उपयोग करें।

होस्ट लोकलहोस्ट इंटरफेस पर 8080 पोर्ट करने के लिए कंटेनर में टीसीपी पोर्ट 80 (नगनेक्स) को मैप करने के लिए, आप दौड़ेंगे:

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

आप सत्यापित कर सकते हैं कि पोर्ट आपके ब्राउज़र में http://localhost:8080 खोलकर या डॉकर होस्ट पर निम्नलिखित curl कमांड चला रहा है:

curl -I

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

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

शेयरिंग डेटा (बढ़ते वॉल्यूम)

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

वॉल्यूम बनाने और प्रबंधित करने के लिए, निम्न के रूप में -p विकल्पों का उपयोग करें:

-v host_src:container_dest:options

  • host_src होस्ट या किसी नामांकित वॉल्यूम पर फ़ाइल या निर्देशिका के लिए एक पूर्ण पथ हो सकता है। host_src dest container_dest पर फ़ाइल या निर्देशिका के लिए एक पूर्ण पथ है।)। यदि कोई विकल्प निर्दिष्ट नहीं किया गया है, तो यह rw को डिफॉल्ट करता है।

यह समझने के लिए कि यह कैसे काम करता है, आइए मेजबान पर एक निर्देशिका बनाएं और इसमें एक index.html फ़ाइल डालें:

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

इसके बाद, कंटेनर में public_html निर्देशिका /usr/share/nginx/html माउंट करें:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

public_html निर्देशिका में पूर्ण पथ निर्दिष्ट करने के बजाय, हम $(pwd) कमांड का उपयोग कर रहे हैं, जो वर्तमान कार्यशील निर्देशिका को प्रिंट करता है।

अब, यदि आप अपने ब्राउज़र में http://localhost:8080 टाइप करते हैं, तो आपको index.html फ़ाइल की सामग्री index.html चाहिए। आप curl उपयोग भी कर सकते हैं:

curl

Testing Docker Volumes

कंटेनर को इंटरएक्टिव रूप से चलाएं

bash जैसी संवादात्मक प्रक्रियाओं से निपटने के दौरान, कंटेनर शुरू करने के लिए -i और -t विकल्पों का उपयोग करें।

-it विकल्प डॉकटर को टर्मिनल से जुड़े मानक इनपुट को रखने और छद्म ट्टी आवंटित करने के लिए कहता है:

docker container run -it nginx /bin/bash

कंटेनर का बैश शेल टर्मिनल से जुड़ा होगा, और कमांड प्रॉम्प्ट बदल जाएगा:

root@1da70f1937f5:/#

अब, आप कंटेनर के शेल के साथ बातचीत कर सकते हैं और इसके अंदर किसी भी कमांड को चला सकते हैं।

इस उदाहरण में, हमने docker run कमांड को एक तर्क के रूप में एक कमांड ( /bin/bash ) प्रदान किया, जिसे डॉकरफाइल में निर्दिष्ट एक के बजाय निष्पादित किया गया था।

निष्कर्ष

डॉकर पैकेजिंग और अनुप्रयोगों को लागू करने और CI / CD, स्वचालन और DevOps का एक अनिवार्य घटक के लिए मानक है।

docker container run बनाने और चलाने के लिए docker container run कमांड का उपयोग किया जाता है।

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