कंटेनर के रूप में डॉकर छवि चलाएँ


604

मैंने डॉकटर से डॉकटर छवि बनाई। मैं देखता हूं कि छवि सफलतापूर्वक बनाई गई थी, लेकिन मैं इसके साथ क्या करता हूं? यह एक कंटेनर के रूप में चलाने में सक्षम नहीं होना चाहिए?

जवाबों:


855

इसे चलाने का विशिष्ट तरीका इस बात पर निर्भर करता है कि आपने छवि को टैग / नाम दिया है या नहीं।

$ docker images
REPOSITORY          TAG                 ID                  CREATED             SIZE
ubuntu              12.04               8dbd9e392a96        4 months ago        131.5 MB (virtual 131.5 MB)

एक नाम के साथ (आइए उबंटू का उपयोग करें ):

$ docker run -i -t ubuntu:12.04 /bin/bash

एक नाम के बिना, बस आईडी का उपयोग कर:

$ docker run -i -t 8dbd9e392a96 /bin/bash

कृपया अधिक जानकारी के लिए डॉकर रन संदर्भ देखें।


4
तो 'NAME' के तहत छपे मानव-अनुकूल नाम docker ps -aयहाँ उपयोगी नहीं हैं?
थोरसुमोनर

11
docker psकंटेनरों को सूचीबद्ध करता है, छवियों को नहीं। यदि आप एक कंटेनर से एक छवि बनाना चाहते हैं, तो आपको चाहिए docker commit। आप NAME का उपयोग कमिट में कर सकते हैं (उदाहरण के लिए docker commit _NAME_ _imagename_)
एंडी

8
@ और क्यों हम अंत में / बिन / बैश का उपयोग करते हैं? मैं भी नया हूँ
राहेल

6
@RaheelKhan आपकी डॉक इमेज को चलाने के लिए कुछ चाहिए। आप इसे उस प्रोग्राम से बदल सकते हैं जिसे आपने इंस्टॉल किया है। / बिन / बैश सिर्फ एक आसान शेल है जो पहले से स्थापित है।
रयान

यदि आपको एक पर्यावरण वैरिएबल जोड़ने की जरूरत है तो आप docker run -i -t -e ROOT_PASSWORD = root ubuntu: 12.04
बालाजी राधाकृष्णन

70

निम्न चरण करें:

  1. $ docker images

    आपको निर्दिष्ट टैग के साथ सभी स्थानीय डॉकर चित्रों की एक सूची मिलेगी।

  2. $ docker run image_name:tag_name

    यदि आपने tag_nameयह निर्दिष्ट नहीं किया है कि यह स्वचालित रूप से 'नवीनतम' टैग के साथ एक छवि चलाएगा।

    इसके बजाय image_name, आप एक छवि आईडी (कोई tag_name) भी निर्दिष्ट कर सकते हैं।


35
  • डॉकर छवियों को सूचीबद्ध करने के लिए

    $ docker images
    
  • यदि आपका एप्लिकेशन पोर्ट 80 के साथ चलना चाहता है, और आप स्थानीय स्तर पर बाइंड करने के लिए एक अलग पोर्ट को उजागर कर सकते हैं, तो 8080 कहें:

    $ docker run -d --restart=always -p 8080:80 image_name:version
    

21

आप अपनी उपलब्ध छवियों का उपयोग करके देख सकते हैं:

docker images

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

docker run -d repository
docker run -d repository:tag
docker run -d image_id

तब आप जांच सकते हैं कि आपका कंटेनर किसका उपयोग कर रहा है

docker ps

docker psआपको एक कंटेनर आईडी देता है। आप इसका उपयोग कर सकते हैं या सिर्फ 2/3 पहले पात्रों का उपयोग करके अपने कंटेनर में जा सकते हैं:

docker exec -it container_id /bin/bash

और आप इसका उपयोग करना बंद कर सकते हैं docker stop container_idऔर docker rm container_id

आप अपने कंटेनर को -rmतर्कों के साथ भी चला सकते हैं, यदि आप अपने कंटेनर को रोकते हैं तो यह स्वचालित रूप से हटा दिया जाएगा।


1
--Rm (नोट: 2 डैश नॉट सिंगल) विकल्प सोना है !!!, मेरा सिस्टम बंद (मृत) कंटेनरों से अटा पड़ा है।
जोहान स्नोगोजो

13

इस आदेश के साथ उस छवि का नाम या आईडी प्राप्त करें, जिसे आप चलाना चाहते हैं:

docker images

डॉकर रन कमांड का उपयोग निम्नलिखित तरीके से किया जाता है:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

नीचे मैंने छवि का नाम या आईडी निर्दिष्ट करने से पहले प्रेषण, नाम, प्रकाशन, वॉल्यूम और पुनरारंभ विकल्प शामिल किए हैं:

docker run -d --name  container-name -p localhost:80:80 -v $HOME/myContainer/configDir:/myImage/configDir --restart=always image-name

कहाँ पे:

--detach , -d        Run container in background and print container ID
--name                Assign a name to the container
--publish , -p        Publish a container’s port(s) to the host
--volume , -v        Bind mount a volume
--restart            Restart policy to apply when a container exits

अधिक जानकारी के लिए, कृपया आधिकारिक डोकर रन संदर्भ देखें


5

यहां डॉकर में एक वेबदेव सेवा चलाने के लिए एक उदाहरण है। छवि का नाम मॉरिसजॉब्के / वेबडाव है । आप इसे डॉकर हब से खींच सकते हैं ।

इन छवियों को चलाने के बाद, आप तब WebDAV उदाहरण तक पहुँच सकते हैं http://localhost:8888/webdav। आंतरिक रूप से फ़ोल्डर /var/webdavका उपयोग WebDAV रूट के रूप में किया जाता है।

आप इस कंटेनर को निम्न प्रकार से चला सकते हैं:

$ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav

पुन "एक webdev सेवा चलाने" : क्या आपका मतलब है "एक WebDAV सेवा चलाने" ? या "एक वेब विकास सेवा चलाएं" ?
पीटर मोर्टेनसेन

5

मुझे भी यही समस्या थी। मैंने अपनी डॉकर छवि को चलाया, और इसने एक विशिष्ट CONTAINER_ID के साथ एक कंटेनर बनाया। मैं एक ही कंटेनर के साथ काम करना चाहता था:

सबसे पहले अपनी डॉकर छवि चलाएँ:

docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning

फिर आपके द्वारा बनाए गए सभी कंटेनरों को सूचीबद्ध करें:

sudo docker ps -a

और उस कंटेनर का चयन करें जिसे आप काम करना चाहते हैं (मेरा 167ddd6d7f15 है):

sudo docker start -ai 167ddd6d7f15

4

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

$ docker imagesआदेश बताता है कि कैसे कई छवियों वर्तमान में स्थानीय भंडार में उपलब्ध हैं। तथा

docker ps -a

दिखाता है कि वर्तमान में कितने कंटेनर उपलब्ध हैं, यानी सक्रिय और बाहर किए गए कंटेनरों की सूची।

कंटेनर में छवि को चलाने के दो तरीके हैं:

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

अलग मोड में:

-d=false: Detached mode: Run container in the background, print new container id

इंटरैक्टिव मोड में:

-i :Keep STDIN open even if not attached

यहां डॉकर रन कमांड है

$ docker run image_name:tag_name

डॉकर रन पर अधिक स्पष्टीकरण के लिए, आप डॉकर रन संदर्भ पर जा सकते हैं ।

यह डॉकर को समझने के लिए सबसे अच्छी सामग्री है।


2

अपने डॉकर होस्ट पर सभी चित्रों की सूची देखने के लिए, दौड़ें:

  $ docker images
   REPOSITORY          TAG           IMAGE ID            CREATED             SIZE
   apache_snapshot     latest        13037686eac3        22 seconds ago      249MB
   ubuntu              latest        00fd29ccc6f1        3 weeks ago         111MB

अब आप Docker छवि को सहभागी मोड में कंटेनर के रूप में चला सकते हैं:

   $ docker run -it apache_snapshot /bin/bash

या यदि आपके पास स्थानीय रूप से कोई चित्र नहीं है, तो डाउनलोड करने के लिए एक छवि के लिए डॉकर हब खोजें:

    $ docker search ubuntu
    NAME                            DESCRIPTION             STARS  OFFICIAL  AUTOMATED
    ubuntu                          Ubuntu is a Debian...   6759   [OK]       
    dorowu/ubuntu-desktop-lxde-vnc  Ubuntu with openss...   141              [OK]
    rastasheep/ubuntu-sshd          Dockerized SSH ser...   114              [OK]
    ansible/ubuntu14.04-ansible     Ubuntu 14.04 LTS w...   88               [OK]
    ubuntu-upstart                  Upstart is an even...   80     [OK]

डॉक पुल कमांड के साथ रिपॉजिटरी से डॉकर छवि को खींचो:

     $ docker pull ubuntu

कंटेनर के रूप में डोकर छवि चलाएँ:

     $ docker run -it ubuntu /bin/bash


-1

उन लोगों के लिए जो एक ही समस्या थी, लेकिन एक त्रुटि का सामना करना पड़ा

rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"bash\": executable file not found in $PATH"

मैंने एक प्रविष्टि बिंदु जोड़ा जो मेरे लिए काम कर रहा था:

docker run -it --entrypoint /bin/sh बैश के बिना छवियों के लिए।

उदाहरण (स्वीकृत उदाहरण से):

run -it --entrypoint /bin/sh ubuntu:12.04

संदर्भ: https://gist.github.com/mitchwongho/11266726

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