ডকার-হাব ব্যবহার না করে কীভাবে আমার ডকার-চিত্রটি ভাগ করবেন?


257

আমি ভাবছিলাম যে ডকারের চিত্রগুলি আমার স্থানীয় হোস্ট মেশিনে হুবহু সঞ্চিত আছে। আমি Docker-Hubবা ডাবর-চিত্রটি ব্যবহার না করে আমার ডকার-চিত্রটি ভাগ করতে পারি Dockerfile? এবং যখন আমি আমার ডকার-চিত্রটি ডকার-হাবের দিকে ধাক্কা দেব তখন ঠিক কী ঘটছে?


2
ভবিষ্যতের রেফারেন্সের জন্য:
ডকারের

উত্তর:


243

ডকার চিত্রগুলি ফাইল সিস্টেম স্তর হিসাবে সংরক্ষণ করা হয়। ডকফাইফিলের প্রতিটি কমান্ড একটি স্তর তৈরি করে। আপনি docker commitকিছু পরিবর্তন করার পরে কমান্ড লাইনটি ব্যবহার করে স্তরগুলিও তৈরি করতে পারেন ( docker runসম্ভবত)।

এই স্তরগুলি ডিফল্টর অধীনে সংরক্ষণ করা হয় /var/lib/docker। আপনি যখন (তাত্ত্বিকভাবে) সেখান থেকে চেরি বাছাই করতে এবং এটি একটি অন্য ডকার সার্ভারে ইনস্টল করতে পারলেন, সম্ভবত ডকারের দ্বারা ব্যবহৃত অভ্যন্তরীণ প্রতিনিধিত্বের সাথে খেলতে পারা সম্ভবত একটি খারাপ ধারণা।

আপনি যখন নিজের ইমেজটিকে ধাক্কা দেন, এই স্তরগুলি রেজিস্ট্রিতে প্রেরণ করা হয় (ডকার হাব রেজিস্ট্রি, ডিফল্টরূপে ... আপনি যদি নিজের ছবিটিকে অন্য রেজিস্ট্রি উপসর্গের সাথে ট্যাগ না করেন) এবং সেখানে সংরক্ষণ করা হয়। ধাক্কা দেওয়ার সময়, স্তর আইডিটি স্থানীয়ভাবে আপনার কাছে ইতিমধ্যে স্তর রয়েছে কিনা তা যাচাই করতে ব্যবহার করা হয় be আপনি docker historyকোন স্তরের (অন্যান্য চিত্রগুলি) ব্যবহৃত হয় তা উঁকি দিতে ব্যবহার করতে পারেন (এবং কিছুটা হলেও, কোন আদেশটি স্তর তৈরি করেছে)।

ডকার হাব রেজিস্ট্রি না ঠেকিয়ে একটি চিত্র ভাগ করার বিকল্প হিসাবে, আপনার সেরা বিকল্পগুলি হ'ল:

  • docker saveএকটি চিত্র বা docker exportএকটি ধারক। এটি একটি টার ফাইলকে স্ট্যান্ডার্ড আউটপুটে আউটপুট দেবে, সুতরাং আপনি এর মতো কিছু করতে পছন্দ করবেন docker save 'dockerizeit/agent' > dk.agent.latest.tar। তারপরে আপনি docker loadবা অন্য docker importকোনও হোস্টে ব্যবহার করতে পারেন ।

  • আপনার নিজস্ব ব্যক্তিগত রেজিস্ট্রি হোস্ট করুন। - পুরানো, মন্তব্য দেখুন ডকার রেজিস্ট্রি চিত্র দেখুন । আমরা একটি এস 3 ব্যাকড রেজিস্ট্রি তৈরি করেছি যা আপনি প্রয়োজনীয় হিসাবে শুরু করতে এবং থামাতে পারেন (সমস্ত রাজ্যটি আপনার পছন্দসইয়ের এস 3 বালতিতে রাখা হয়েছে) যা সেটআপের ক্ষেত্রে তুচ্ছ। এটি কোনও রেজিস্ট্রি করার সময় কী ঘটে তা দেখার একটি আকর্ষণীয় উপায়

  • Quay.io এর মতো আরেকটি রেজিস্ট্রি ব্যবহার করুন (আমি ব্যক্তিগতভাবে এটি চেষ্টা করি নি), যদিও ডকার হাবের সাথে আপনার যে উদ্বেগ রয়েছে তা সম্ভবত এখানেও প্রয়োগ হবে।


6
ভবিষ্যতের রেফারেন্সের জন্য, ডকার রেজিস্ট্রি চিত্রটির লিঙ্কটি পুরানো। আপনার এখন
ডিকার

1
আমি নিশ্চিত নই যে এটি পরিষ্কার যে রেজিস্ট্রি ২.০ আসলটির পরিবর্তনের জন্য প্রস্তুত। এটা যেমন সার্চ কিছু প্রাথমিক কার্যকারিতা মিস্ বলে মনে হয় stackoverflow.com/questions/30113726/docker-registry-2-0-api-v2
JoshRivers

1
সম্পর্কে প্রশ্ন docker save: আমি যখন অন্য কোনও চিত্র থেকে প্রাপ্ত কোনও চিত্র (যাক বলি python:2.7) একটি রেজিস্ট্রিতে ধাক্কা দিই , তখন পিতামাতার চিত্রটি পরিবর্তন না হওয়া পর্যন্ত একাধিকবার আপলোড করার প্রয়োজন হয় না। অনুরূপ ফাইল আকারের অপ্টিমাইজেশন অর্জন করতে আমি কি আংশিক চিত্রগুলি সংরক্ষণ করতে পারি? আমি এই হুপগুলি দিয়ে লাফিয়ে যাচ্ছি কারণ আমি একাধিক চিত্রের শখের একজন এবং আমি কোনও ব্যক্তিগত রেজিস্ট্রির জন্য অর্থ দিতে চাই না।
পিটার

4
আপনি কি ডকফেরফিল এবং docker buildহোস্টে গিট রেপো থেকে কেবল এসআরসি ফাইলগুলি টানতে পারবেন না ?
jshxe

1
@ জিশাক্স আমার বিল্ডের অংশটি হ'ল npm install... আমি আমার হোস্টের উপর নির্মাণ করতে পারছি না কারণ এর স্মৃতি খুব কম এবং এই পদক্ষেপটি সর্বদা ব্যর্থ হয় (দেখুন: github.com/npm/npm/issues/5021 )
সফট বুলেট

46

এই ব্লগের উপর ভিত্তি করে , কেউ ডকার রেজিস্ট্রি ছাড়াই ডকারের চিত্র ভাগ করে চালাতে পারে:

docker save --output latestversion-1.0.0.tar dockerregistry/latestversion:1.0.0

এই কমান্ডটি শেষ হয়ে গেলে, কেউ চিত্রটি একটি সার্ভারে অনুলিপি করতে পারে এবং নীচে এটি আমদানি করতে পারে:

docker load --input latestversion-1.0.0.tar

18

রিমোট সার্ভারে একটি ডকার চিত্র পাঠানো 3 টি সহজ ধাপে করা যেতে পারে:

  1. স্থানীয়ভাবে ডকার চিত্রটি .tar হিসাবে সংরক্ষণ করুন :
docker save -o <path for created tar file> <image name>
  1. স্থানীয়ভাবে, দূরবর্তী থেকে .tar স্থানান্তর করতে scp ব্যবহার করুন

  2. রিমোট সার্ভারে, ডকারে চিত্র লোড করুন:

docker load -i <path to docker image tar file>

8

আপনি যদি ডকার হাব নিজেই ব্যবহার করতে না চান তবে আপনি জেএফগ্রোগ দ্বারা আর্টিফ্যাক্টারের অধীনে আপনার নিজস্ব ডকার সংগ্রহস্থলটি হোস্ট করতে পারেন:

https://www.jfrog.com/confluence/display/RTF/Docker+Repositories

যা আপনার নিজের সার্ভারে চালিত হবে।

অন্যান্য হোস্টিং সরবরাহকারী পাওয়া যায়, যেমন: কোরিওএস:

http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/

যা কিনে দিয়েছে quay.io

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.