Dockerfile में इमेज नाम कैसे सेट करें?


299

आप इस तरह से एक कस्टम छवि बनाते समय छवि का नाम सेट कर सकते हैं:

docker build -t dude/man:v2 . # Will be named dude/man:v2

क्या डॉकरीफाइल में छवि के नाम को परिभाषित करने का कोई तरीका है, इसलिए मुझे इसका उल्लेख करने की आवश्यकता नहीं है docker build?


1
किसी के लिए उत्सुक, से FROM ... AS नाम काम नहीं करता है
Rufus

जवाबों:


265

छवि की टैगिंग डॉकरीफाइल के अंदर समर्थित नहीं है। यह आपके बिल्ड कमांड में किया जाना चाहिए। वर्कअराउंड के रूप में, आप बिल्ड को डॉकटर-कंपोज के साथ कर सकते हैं। लक्ष्य छवि नाम की पहचान करता है और फिर रन करता है docker-compose build। एक नमूना docker-compose.yml जैसा दिखेगा

version: '2'

services:
  man:
    build: .
    image: dude/man:v2

उस ने कहा, वहाँ निर्माण के साथ एक धक्का के खिलाफ रचना है क्योंकि वह झुंड मोड deploys के साथ काम नहीं करता है। जैसा कि आप अपने प्रश्न में दिए गए आदेश को चलाने के लिए कर रहे हैं:

docker build -t dude/man:v2 .

व्यक्तिगत रूप से, मैं अपने फ़ोल्डर (बिल्ड.sh) में एक छोटी सी शेल स्क्रिप्ट के साथ निर्माण करता हूं, जो टाइपिंग को सहेजने के लिए किसी भी आर्गन को पारित करता है और इसमें छवि का नाम भी शामिल है। और उत्पादन के लिए, बिल्ड को एक ci / cd सर्वर द्वारा नियंत्रित किया जाता है जिसमें पाइपलाइन स्क्रिप्ट के अंदर छवि नाम होता है।


302

कैसे yml फ़ाइल का उपयोग किए बिना कस्टम नाम के साथ एक छवि बनाने के लिए:

docker build -t image_name .

कस्टम नाम के साथ एक कंटेनर कैसे चलाएं:

docker run -d --name container_name image_name

78
मैं आगे टिप्पणी नहीं करने जा रहा हूं, लेकिन सवाल यह था कि "डॉकरफाइल में छवि का नाम कैसे सेट किया जाए?" नहीं "कैसे docker छवि नाम सेट करें?" वह जवाब सवाल में ही था।
नवतारा

68
मैं कुछ समय बाद इस पर वापस आया हूं, और तकनीकी रूप से ऑफ-टॉपिक होने के बावजूद इस उत्तर ने मदद की है
gdbj

7
यदि आप Dockerfileअपनी छवि के लिए एक ही नाम के साथ एक निर्देशिका में रखते हुए संगत हैं , तो आप docker build -t $(basename $PWD) .अपनी बिल्ड कमांड के रूप में उपयोग कर सकते हैं । फिर आप कमांड बनाने और पुनः उपयोग करने के लिए "बिल्ड" से CTRL-R खोज का उपयोग कर सकते हैं और इसे कभी भी संपादित नहीं करना होगा। आप चाहें तो इसे एक उपनाम भी बना सकते हैं।
ब्रूनो ब्रोंस्की

इस उत्तर के लिए वैसे भी धन्यवाद। मैं इसे इंटरनेट पर लाने के लिए कुछ घंटे बिता रहा था। मुझे उचित उत्तर नहीं मिला, जो अपनी छवि को नाम देता है वह इसके बिना आगे नहीं जा सकता है यदि उसे अपने कंटेनर में नाम की आवश्यकता है।
सुजाज एस नायर

38

यहाँ एक और संस्करण है यदि आपको एक विशिष्ट डॉकटर फ़ाइल का संदर्भ देना है:

version: "3"
services:
  nginx:
    container_name: nginx
    build:
      context: ../..
      dockerfile: ./docker/nginx/Dockerfile
    image: my_nginx:latest

फिर तुम बस दौड़ो

docker-compose build

1
मुझे यह पसंद है कि यह उत्तर कंटेनर_नाम और छवि नाम: टैग के बीच अंतर को दर्शाता है। यदि केवल इस बात पर थोड़ा और स्पष्टीकरण होता है कि क्या चल रहा है: "कंटेनर_नाम" उस कंटेनर को नाम देता है जो अंततः छवि से अलग हो जाता है। "छवि" नाम और बनाई गई छवि को टैग करता है, जिसमें से कंटेनर बनाया गया है। जैसा कि दूसरों ने उल्लेख किया है, एक डॉकफाइल से छवि का नाम निर्दिष्ट नहीं कर सकता है, जैसा कि ओपी ने कहा, इसलिए हम इसके बजाय docker-compose.yml फ़ाइल का उपयोग करते हैं, और इसे "docker-compose up -d --build"
शॉन मैकार्थी के

-7

आप इसे 'AS ’FROM ubuntu: 16.04 AS FooImage का उपयोग करके कर सकते हैं


6
ASवाक्य रचना लक्ष्य एक बहुमंज़िला निर्माण में प्रयोग किया जाता नाम निर्दिष्ट करता है, और इस नाम भी के लिए एक छवि के स्थान पर इस्तेमाल किया जा सकता COPY --fromहै कि बहुमंज़िला निर्माण के भीतर वाक्य रचना। हालाँकि, यह बिल्ड के लिए परिणामी नाम / टैग को निर्दिष्ट नहीं करता है।
BMitch
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.