मैं एक स्थानीय छवि को डॉकफाइल के साथ आधार छवि के रूप में कैसे उपयोग कर सकता हूं?


126

मैं एक डॉकटराइल पर काम कर रहा हूं। मुझे बस एहसास हुआ कि मैं FROMसभी अनुक्रमित छवियों के साथ उपयोग कर रहा हूं ।

तो मुझे आश्चर्य है:

  • मैं अपने स्थानीय (कस्टम) चित्रों में से किसी एक को अपने आधार ( FROM) छवि के बिना pushingसूचकांक में कैसे उपयोग कर सकता हूं ?

जवाबों:


148

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

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


5
मेरे लिए काम नहीं करता है - boot2docker के साथ कोई समस्या हो सकती है? मेरे पास नवीनतम संस्करण 1.3.1 है ... डॉकर स्थानीय रूप से पहले (या शायद इसकी रिपोर्ट नहीं करता है) की जाँच करने के लिए प्रकट नहीं होता है, यह सीधे रजिस्ट्री stackoverflow.com/q/27046118/202168
एन्ट्रोपिक

@Anentropic मैं boot2docker 1.5 का उपयोग कर रहा हूं। bash-4.3 $ docker की छवियाँ REPOSITORY TAG IMAGE ID बनाई गई VIRTUAL SIZE ubuntu1504gcc484 नवीनतम 0378ea1c0b6c 19 घंटे पहले 1.36 GB और मेरे अन्य Dockerfile में "FUB ubuntu1504gcc484" कर रही है, और यह ठीक काम करता है। (खराब फॉर्मेटिंग के लिए माफी)
पीजवान

मुझे कोई और जानकारी नहीं है, मैं भी अब 1.5 पर हूं
एंथ्रोपिक

1
मैंने एक चित्र बनाया और इसे हमारी स्थानीय रजिस्ट्री के लिए टैग किया। इस तरह से टैग किया गया है, यह इसे केवल नाम के साथ नहीं मिलता है, और पूर्ण नाम में रजिस्ट्री शामिल है इसलिए यदि आप इस तरह से संदर्भ देते हैं कि यह वहां टैग लाएगा। आप इसे फिर से नाम के सरल रूप के साथ टैग कर सकते हैं और रजिस्ट्री को देखने से पहले इसे ढूंढ लेंगे। मेरे लिए काम किया।
गेरी ग्लीसन

1
नहीं, यह गलत है। डॉकर एक दूरस्थ रजिस्ट्री से एक छवि खींचने की कोशिश कर रहा है, इस तथ्य के बावजूद कि मेरे पास स्थानीय रूप से एक ही नाम के साथ एक छवि है, जिसमें सूचीबद्ध है docker image list
जॉन स्मिथ वैकल्पिक

16

सत्यापित: यह डोकर 1.7.0 में अच्छा काम करता है।

BTW, कमांड --pull=trueचलाते समय निर्दिष्ट न करें docker build:

यदि आप आधार छवि के रूप में स्थानीय छवि का उपयोग करना चाहते हैं, तो कृपया विकल्प के बिना --pull=true, --pull=trueहमेशा छवि के नए संस्करण को खींचने का प्रयास करेंगे।

- https://github.com/docker/docker/issues/14943


4
यदि आपकी छवि में नाम के लिए एक -चरित्र है ( my-imageउदाहरण के लिए) तो आपका डॉकटर स्थानीय रूप से इस छवि को हल नहीं करेगा, मुझे नहीं पता, वैसे भी इसे ठीक करने के लिए बस -चरित्र का उपयोग न करें , 1.8-
doose

1
मुझे एक हाइफन किए गए नाम के साथ कोई समस्या नहीं थी Docker version 17.06.2-ce, build cec0b72, लेकिन सुनिश्चित करें कि यदि आपने अपनी छवि को टैग किया है तो आप टैग को छवि विनिर्देश (FROM localimage: tag) के भाग के रूप में शामिल करते हैं।
स्कॉट

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

@deFreitas: मेरी पिछली टिप्पणी के बाद, मैंने हाइफ़न के अंडरस्कोर इंटीड के साथ कोशिश की और एक ही मुद्दा मिला, डॉकटर ने स्थानीय छवि के बावजूद छवि को रिमोट से खींचने की कोशिश की। मेरे मामले में कम से कम हाइफ़न समस्या नहीं है।
जॉन स्मिथ वैकल्पिक

4

आपकी छवियों में आपके पास वर्ण हो सकते हैं। मान लें कि आपके पास स्थानीय छवि है (स्थानीय रजिस्ट्री नहीं) जिसका नाम 7.3.1611 टैग के साथ सेंटोस-बेस-छवि है।

docker version 
      Client:
       Version:         1.12.6
       API version:     1.24
       Package version: docker-common-1.12.6-16.el7.centos.x86_64
       Go version:      go1.7.4

      Server:
       Version:         1.12.6
       API version:     1.24
       Package version: docker-common-1.12.6-16.el7.centos.x86_64
       Go version:      go1.7.4

docker images
 REPOSITORY            TAG
 centos-base-image     7.3.1611

Dockerfile

FROM centos-base-image:7.3.1611
RUN yum -y install epel-release libaio bc flex

परिणाम

Sending build context to Docker daemon 315.9 MB
Step 1 : FROM centos-base-image:7.3.1611
  ---> c4d84e86782e
Step 2 : RUN yum -y install epel-release libaio bc flex
  ---> Running in 36d8abd0dad9
...

ऊपर दिए गए उदाहरण में FROMआपकी स्थानीय छवि प्राप्त हो रही है, आप अपनी कस्टम रजिस्ट्री (जैसे FROM localhost:5000/my-image:with.tag) से एक छवि लाने के लिए अतिरिक्त निर्देश प्रदान कर सकते हैं । देखें https://docs.docker.com/engine/reference/commandline/pull/#pull-from-a-different-registry और https://docs.docker.com/registry/#tldr

अंत में, यदि नाम प्रदान करते समय आपकी छवि हल नहीं हो रही है, तो इसे बनाते समय छवि में टैग जोड़ने का प्रयास करें

यह गीथहब थ्रेड स्थानीय छवियों को नाम से नहीं ढूंढने के एक समान मुद्दे का वर्णन करता है

किसी विशिष्ट टैग को छोड़ने से, docker को "नवीनतम" टैग की गई छवि दिखाई देगी, इसलिए या तो इसके साथ एक छवि बनाएं: नवीनतम टैग, या अपना FROM बदलें


0

केवल टैग ही नहीं, बल्कि रिपॉजिटरी जिसमें वह टैग है, इस तरह से रखना याद रखें:

docker images
REPOSITORY                                TAG                       IMAGE ID            CREATED             SIZE
elixir                                    1.7-centos7_3             e15e6bf57262        20 hours ago        925MB

आपको इसे इस तरह से संदर्भित करना चाहिए:

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