मैं डॉकरफाइल से डॉक करने का उदाहरण कैसे चलाऊं?


99

मैं आखिरकार यह पता लगाता हूं कि डॉक को कैसे उठना और चलाना है।

docker run --name my-forum-nodebb --link my-forum-redis:redis -p 80:80 -p 443:443 -p 4567:4567 -P -t -i nodebb/docker:ubuntu

मैंने इसे एक रेडिस उदाहरण से जोड़ा, ठंडा।

यह खरोंच से है और मुझे लगता है कि जब मैंने रेडिस का उदाहरण बनाया

docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis

यह एक दूरस्थ रेपो से छवि को खींचता है?

NodeBB एक Dockerfile https://github.com/NodeBB/NodeBB/blob/master/Dockerfile प्रदान करता है मुझे वास्तव में यह सुनिश्चित नहीं है कि इसका उपयोग कैसे किया जाए। मैं यह मान रहा हूं कि मैं अपने रिमोट पर इस डॉकरीफाइल को कॉल करके किसी तरह स्थानीय वातावरण बना सकता हूं।

क्या ये सही है? यदि हां, तो मैं रिमोट की ओर इशारा करते हुए स्थानीय उदाहरण कैसे बना सकता हूं?


आप अपने स्थानीय परिवेश में डॉकटर छवि का निर्माण कर सकते हैं और इसे स्थानीय रूप से खींच सकते हैं
बीएमडब्लू

$ बिल्ली डॉकरीफाइल | docker build -t <image_name> - # माइंड द हाइफ़न
jbobbylopez

जवाबों:


101

फ़ाइल डाउनलोड करें और उसी निर्देशिका से चलाएं docker build -t nodebb .

यह आपको अपने स्थानीय मशीन पर एक छवि देगा जिसका नाम नोडब है जिसे आप एक कंटेनर से लॉन्च docker run -d nodebbकर सकते हैं (आप नोडब को अपने नाम से बदल सकते हैं )।


1
यह कैसे काम करता है? अगर मेरे पास बस dockerfile है तो यह मेरी परियोजना के बारे में कैसे जानता है? क्या डॉकटराइल में कोई लिंक है? फिर मुझे लगता है कि अगर कोई डॉकटर एक नई छवि की पैकेजिंग करता है जिसे मैं अपने सर्वर पर स्थानांतरित कर सकता हूं। इस पैकेजिंग में यह मेरी परियोजना की सभी परिसंपत्तियों को अवशोषित करता है? क्षमा करें यदि मैं अज्ञानी लगता हूं, तो मेरे लिए डॉकटर एक नई अवधारणा है लेकिन मुझे सीखने में मजा आ रहा है।
माइकल जोसेफ ऑबरी

2
वैसे धन्यवाद और <> आपके उदाहरण में यह दर्शाता है कि आपने <नोडब> क्यों चुना?
माइकल जोसेफ ऑबरी

कोई भी डॉकटर कंटेनर "आपके" प्रोजेक्ट के बारे में नहीं जानता है, वे बहुत सामान्य हैं।
एंड्रियास वेलेब्रांड

3
आपके द्वारा प्रदान की गई कमांड काम नहीं करती है इसलिए मैंने `docker build` की कोशिश की और यह काम कर गया, लेकिन चूंकि इसका नाम नहीं है इसलिए मैं इसे नहीं चला सकता। docker build -t <nodebb> .मुझे देता है file exists: .। मेरे पास एक मौजूदा परियोजना है जो कि एक साथ आई है Dockerfileइसलिए मैंने इसे उस निर्देशिका के अंदर चलाया।
माइकल जोसफ ऑबरी

2
यह मेरे बहुत से सवालों का जवाब दे रहा है, हालांकि docs.docker.com/engine/reference/builder
माइकल जोसेफ ऑब्री

48

आप Dockerfile से कंटेनर प्रारंभ नहीं कर सकते हैं।

प्रक्रिया इस प्रकार है:

Dockerfile = [ docker build] => Docker image = [ docker run] => Docker कंटेनर

एक कंटेनर शुरू करने (या चलाने) के लिए आपको एक छवि की आवश्यकता होती है। एक छवि बनाने के लिए आपको Dockerfile [1] का निर्माण करना होगा।

[१]: आप docker importटारबॉल या फिर से एक छवि भी बना सकते हैं docker load


28

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

से प्रलेखन :

किसी संदर्भ को निर्दिष्ट करने के बजाय, आप URL में एक डॉकफ़िल को पास कर सकते हैं या फ़ाइल को STDIN के माध्यम से पाइप कर सकते हैं। STDIN से एक डॉकफाइल को पाइप करने के लिए:

$ docker build - < Dockerfile

विंडोज पर पॉवर्सशेल के साथ, आप चला सकते हैं:

Get-Content Dockerfile | docker build -

जब निर्माण पूरा हो जाए, तो कमांड चलाएँ:

docker image ls

आप कुछ इस तरह देखेंगे:

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
<none>                     <none>              123456789        39 seconds ago      422MB

अपनी वास्तविक छवि आईडी की प्रतिलिपि बनाएँ और फिर चलाएं

docker run 123456789

जहां अंत में संख्या पिछले चरण से वास्तविक छवि आईडी है

यदि आप छवि आईडी को याद नहीं रखना चाहते हैं, तो आप अपनी छवि को टैग कर सकते हैं

docker tag 123456789 pavel/pavel-build

जो आपकी इमेज को टैग कर देगा pavel/pavel-build


कमाल यह कि 2020 में पहली स्निपेट को खोजने में इतना लंबा समय लगा।
fullStackChris 13

यह सिर्फ अधिक समारोह के साथ स्वीकृत उत्तर है।
जूल

21

सीधा और आसान उपाय है:

docker build .
=> ....
=> Successfully built a3e628814c67
docker run -p 3000:3000 a3e628814c67

3000 - कोई भी पोर्ट हो सकता है

a3e628814c68 - सफलता बिल्ड कमांड द्वारा दिया गया हैश परिणाम

ध्यान दें : आपको उस निर्देशिका के भीतर होना चाहिए जिसमें Dockerfile हो

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