আমি কীভাবে একটি স্থানীয় চিত্রকে ডকফাইফিলের সাথে বেস চিত্র হিসাবে ব্যবহার করতে পারি?


126

আমি একটি ডকফায়াইল কাজ করছি। আমি ঠিক বুঝতে পেরেছি যে আমি FROMসমস্ত বরাবর সূচিযুক্ত চিত্রগুলি ব্যবহার করছি ।

তাই আমি অবাক:

  • আমি কীভাবে আমার স্থানীয় (কাস্টম) চিত্রগুলির একটিটিকে আমার বেস ( FROM) চিত্র হিসাবে pushingসূচক না রেখে ব্যবহার করতে পারি?

উত্তর:


148

বিশেষ কিছু না করে আপনি এটি ব্যবহার করতে পারেন। আপনার কাছে যদি স্থানীয় চিত্র বলা হয় তবে blahআপনি এটি করতে পারেন FROM blah। যদি আপনি না FROM blahআপনার Dockerfile, কিন্তু না একটি স্থানীয় নামক চিত্র আছে blah, তারপর Docker রেজিস্ট্রি থেকে এটি টান করতে চেষ্টা করবে।

অন্য কথায়, যদি কোনও ডকফেরফিল করে FROM ubuntuতবে আপনার কাছে স্থানীয় চিত্রটি ubuntuঅফিসিয়াল চিত্রের চেয়ে আলাদা, আপনার চিত্রটি এটি ওভাররাইড করবে।


5
আমার জন্য কাজ করে না - বুট 2 ডকারে সমস্যা হতে পারে? আমি সর্বশেষ সংস্করণ 1.3.1 ... Docker স্থানীয়ভাবে প্রথম (হয়তো বা সে বিষয়ে রিপোর্ট করে না) চেক করতে এটা যায় সোজা রেজিস্ট্রি থেকে টান প্রয়াস বলে মনে হচ্ছে না আছে stackoverflow.com/q/27046118/202168
Anentropic

@ অ্যান্ট্রোপিক আমি বুট 2 ডকার 1.5 ব্যবহার করছি। bash-4.3 ock ডকার ইমেজগুলি রেপোজিটরি ট্যাগ ইমেজ আইডি তৈরি করা হয়েছে ভার্চুয়াল সাইজ উবুন্টু 1504gcc484 সর্বশেষ 0378ea1c0b6c 19 ঘন্টা আগে 1.36 গিগাবাইট এবং আমার অন্যান্য ডকফাইলে "FMM ubuntu1504gcc484" করছেন এবং এটি ঠিক কাজ করে। (দুর্বল বিন্যাসের জন্য ক্ষমা)
পেজওয়ান

আমি আর জানি না, আমি এখন 1.5 তেও আছি
এ্যানট্রপিক

1
আমি একটি স্থানীয় চিত্র নিবন্ধের জন্য তৈরি করেছি এবং এটি ট্যাগ করেছি। এইভাবে ট্যাগ করা, এটি কেবল নামের সাথে এটি খুঁজে পায় না এবং পুরো নামটিতে রেজিস্ট্রি অন্তর্ভুক্ত থাকে সুতরাং আপনি যদি সেইভাবে উল্লেখ করেন তবে এটি ট্যাগটি আনবে। আপনি নামের সাধারণ ফর্মটি দিয়ে এটি আবার ট্যাগ করতে পারেন এবং এটি রেজিস্ট্রি দেখার আগে এটি খুঁজে পাবেন। আমার জন্য কাজ করেছেন।
গেরি গ্লেসন

1
না, এটি ভুল। স্থানীয়ভাবে একই নামযুক্ত আমার একটি চিত্র রয়েছে যা সুনির্দিষ্টভাবে তালিকাভুক্ত হয়েছে সত্ত্বেও ডকার একটি দূরবর্তী রেজিস্ট্রি থেকে একটি চিত্র টানতে চেষ্টা করছেন docker image list
জন স্মিথ ption

16

যাচাই করা হয়েছে: এটি ডকার 1.7.0 এ ভাল কাজ করে।

বিটিডাব্লু, কমান্ডটি --pull=trueচালানোর সময় নির্দিষ্ট করে দিবেন না docker build:

আপনি বেস ইমেজ হিসাবে স্থানীয় ইমেজ ব্যবহার করতে চান তাহলে, দয়া করে বিকল্প ছাড়া --pull=true, --pull=trueসবসময় ইমেজ এর নতুন সংস্করণ টান করার চেষ্টা করবে।

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


4
আপনার চিত্রটি কোনো থাকে তাহলে -অক্ষর ( my-imageউদাহরণস্বরূপ) নামে তারপর আপনার Docker স্থানীয়ভাবে এই ছবিটি সমাধান করবে না, আমি কেন, যাহাই হউক না কেন ঠিক করতে এটি সহজভাবে ব্যবহার করবেন জানি না -চরিত্র, উপর Docker-রচনা 1.8 এবং Docker 1.11 পরীক্ষিত
ডিফ্রেইটাস

1
হাইফেনেটেড নামটি নিয়ে আমার কোনও সমস্যা ছিল না Docker version 17.06.2-ce, build cec0b72, তবে নিশ্চিত হয়ে নিন যে আপনি যদি নিজের চিত্রটি ট্যাগ করেন তবে আপনি চিত্রটির নির্দিষ্টকরণের অংশ হিসাবে ট্যাগটি অন্তর্ভুক্ত করেন (FROM স্থানীয়করণ: ট্যাগ)।
স্কট

@ ডিফ্রিটাস যা সত্য বলে মনে হচ্ছে, নামটি হাইফেন সহ আমার একটি চিত্র রয়েছে এবং স্থানীয়ভাবে বিদ্যমান একটি নাম থাকা সত্ত্বেও ডকার একটি দূরবর্তী রেজিস্ট্রি থেকে এটি টানতে চেষ্টা করছেন। নামে হাইফেন সম্পর্কে এই নিয়মটি যদি সত্য হয়ে যায় তবে এটি খাঁটি পাগলামি।
জন স্মিথ ption

@ ডিফ্রিটাস: আমার শেষ মন্তব্যের পরে আমি হাইফেনগুলির আন্ডারস্কোর ইন্টেড দিয়ে চেষ্টা করেছি এবং একই সমস্যা পেয়েছি, স্থানীয় চিত্র উপস্থিত থাকা সত্ত্বেও ডকটি রিমোট থেকে চিত্রটি টানতে চাইছেন। আমার ক্ষেত্রে কমপক্ষে হাইফেনগুলির সমস্যা নেই।
জন স্মিথ ption

4

আপনার ইমেজগুলিতে অক্ষর থাকতে পারে। ধরুন আপনার একটি স্থানীয় চিত্র (স্থানীয় রেজিস্ট্রি নয়) নামে সেন্টোস-বেস-চিত্র রয়েছে 7.৩.১611।

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

অবশেষে, কোনও নাম সরবরাহ করার সময় যদি আপনার চিত্রটি সমাধান না হয় তবে আপনি যখন চিত্রটি তৈরি করেন তখন একটি ট্যাগ যুক্ত করার চেষ্টা করুন

এই গিটহাব থ্রেডটি নাম অনুসারে স্থানীয় চিত্রগুলি না খুঁজে পাওয়ার অনুরূপ ইস্যু বর্ণনা করে

একটি নির্দিষ্ট ট্যাগ বাদ দিয়ে, ডকার একটি "সর্বশেষ" ট্যাগযুক্ত চিত্রের সন্ধান করবে, সুতরাং হয় সর্বশেষ ট্যাগ সহ একটি চিত্র তৈরি করুন, বা আপনার 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.