ডকার হাব কন্টেইনার ছবি বিতরণ এবং ভাগ করার জন্য সবচেয়ে পরিচিত রেজিস্ট্রি। যাইহোক, ডকার হাব এবং অন্যান্য ওসিআই-সম্মত রেজিস্ট্রিগুলি এখন কেবল কন্টেইনার চিত্রের চেয়ে আরও বেশি কিছু করতে পারে। ORAS (OCI Registry As Storage) প্রজেক্ট রেজিস্ট্রিগুলিকে জেনেরিক আর্টিফ্যাক্ট আর্কাইভে রূপান্তরিত করে, যা আপনার আবেদনের সাথে প্রাসঙ্গিক সমস্ত সম্পদ প্রকাশ করতে সক্ষম।
এই নিবন্ধে, আপনি শিখবেন ORAS কী, এটি কী চ্যালেঞ্জগুলি সমাধান করে এবং কীভাবে ডকার হাবের সাথে শুরু করা যায়।
ডকার হাব বনাম ওসিআই রেজিস্ট্রি
চলুন প্রথমে একটি বিশদ বিবরণ দেওয়া যাক: কন্টেইনার ইকোসিস্টেমটি কেবল ডকারের চেয়ে বেশি। ডকার যে টুলস এবং প্রসেসগুলি অগ্রগামী করেছিল তা ওসিআই দ্বারা প্রমিত করা হয়েছে৷ ডকার এখন পডম্যান এবং কুবারনেটসের মতো অন্যান্য সামঞ্জস্যপূর্ণ কন্টেইনার সিস্টেমের পাশাপাশি ওসিআই স্পেসিফিকেশনগুলির একটি বাস্তবায়ন।
ডকার হাব হল একটি OCI রেজিস্ট্রি অনুগত কন্টেইনার ইমেজ ডেলিভারি প্ল্যাটফর্ম। ওসিআই কন্টেইনার সরঞ্জামগুলি ডকার হাব এবং অন্যান্য রেজিস্ট্রিগুলির সামগ্রী যেমন কমান্ডের মাধ্যমে ব্যবহার করতে পারে docker pull
এবং docker push
. যদিও এইগুলি আগে শুধুমাত্র কন্টেইনার ইমেজগুলির সাথে কাজ করেছিল, আপনি এখন আপনার অ্যাপের অন্যান্য উপাদানগুলি বিতরণ করতে একই পদ্ধতি ব্যবহার করতে পারেন৷
কেন জেনেরিক আর্টিফ্যাক্ট ম্যাটার
এই কার্যকারিতা ORAS এর ব্যানারে তৈরি করা হচ্ছে। এটি রেজিস্ট্রিগুলিকে “গ্লোবাল আর্টিফ্যাক্ট স্টোর” হিসাবে পুনর্নির্মাণ করে যা আপনি পরিচিত পুশ/পুল ওয়ার্কফ্লো ব্যবহার করে ইন্টারঅ্যাক্ট করতে পারেন৷
আপনার সফ্টওয়্যার সফলভাবে চালানোর জন্য ব্যবহারকারীর যা প্রয়োজন তা হল একটি শিল্পকর্ম। এটি একটি কন্টেইনার ইমেজ বা অন্য কোনো ধরনের সম্পদ হতে পারে যা আপনার প্রকল্পের জন্য অর্থপূর্ণ হয়:
- হেলমেট চার্ট
- প্রাক-সংকলিত বাইনারি এবং ইনস্টলেশন প্যাকেজ
- SBOMs
- প্রস্তাবিত নিরাপত্তা নীতি কনফিগারেশন, যেমন OPA নিয়ম
- স্বাক্ষর, শংসাপত্র এবং মেটাডেটা প্রকাশ করুন
এই অত্যাবশ্যক সম্পদ প্রায়ই ব্যবহারকারীদের জন্য খুঁজে পাওয়া কঠিন. এগুলি সাধারণত বিভিন্ন সোর্স ম্যানেজমেন্ট প্ল্যাটফর্ম, প্যাকেজ ম্যানেজার এবং সরাসরি ওয়েবসাইট ডাউনলোডে ছড়িয়ে ছিটিয়ে থাকে। ORAS আপনাকে একটি কেন্দ্রীভূত রেজিস্ট্রিতে সবকিছু জমা করার অনুমতি দেয় এবং তারপরে ব্যবহারকারীদের একক টুল এবং শংসাপত্র ব্যবহার করে সামগ্রী পুনরুদ্ধার করতে দেয়। আপনার v1.1.0 রিলিজের জন্য SBOM দেখা যতটা সহজ oras pull example.com/my-app/sbom:v1.1.0
এই ক্ষেত্রে.
ORAS কি ধারক চিত্রগুলির জন্য একটি যুগান্তকারী?
ORAS বিদ্যমান কন্টেইনার রেজিস্ট্রি ফাংশন ভঙ্গ করে না। আপনি এই ধরনের কমান্ড চালানো চালিয়ে যেতে পারেন docker push my-image:latest
আপনার ছবি সরাতে.
পর্দার আড়ালে, তবে বিষয়বস্তু সঞ্চয়স্থানে উল্লেখযোগ্য পরিবর্তন রয়েছে। ORAS ঐতিহাসিক ধারণাকে সরিয়ে দেয় যে সমস্ত রেজিস্ট্রি বিষয়বস্তু একটি চিত্র। আর্টিফ্যাক্টগুলিকে সমর্থন করার জন্য, রেজিস্ট্রিগুলিকে অবশ্যই প্রতিটি সম্পূর্ণ আপলোডের ধরণ ট্র্যাক করতে হবে৷ বিভিন্ন ধরনের শিল্পকর্মকে ORAS-এর মধ্যে “মিডিয়ার ধরন” হিসাবে উল্লেখ করা হয়।
জনপ্রিয় সম্প্রদায় প্রকল্পগুলি সাধারণত ব্যবহৃত আর্টিফ্যাক্ট শ্রেণীবিভাগ সনাক্ত করতে তাদের নিজস্ব মিডিয়া প্রকার নিবন্ধন করতে পারে, যেমন হেলম চার্ট। এটি রেজিস্ট্রি প্রদানকারীদের আপনার সংরক্ষণ করা শিল্পকর্ম সম্পর্কে প্রাসঙ্গিক তথ্য প্রদর্শন করার অনুমতি দেয়।
ধারক ইমেজ মিডিয়া টাইপ স্বয়ংক্রিয়ভাবে ব্যবহৃত হয় যখন বিদ্যমান সরঞ্জাম থেকে ঠেলাঠেলি যেমন docker push
. ORAS CLI থেকে সরাসরি আপলোড করার সময় একটি ডিফল্ট “অজানা” প্রকার প্রয়োগ করা হয় যদি না আপনি একটি নিবন্ধিত প্রকার উল্লেখ করেন।
ORAS CLI ইনস্টল করুন
নির্বিচারে ধরনের আর্টিফ্যাক্টগুলি পুশ এবং পুনরুদ্ধার করতে আপনার ORAS CLI প্রয়োজন। আপনি প্রকল্পের GitHub রিলিজ পৃষ্ঠা থেকে সর্বশেষ সংস্করণ ডাউনলোড করতে পারেন। বর্তমানে শুধুমাত্র macOS এবং Linux সিস্টেম সমর্থিত।
ডাউনলোড করা আর্কাইভ এক্সট্র্যাক্ট করুন এবং কপি করুন oras
আপনার পথের একটি অবস্থানে বাইনারি:
$ tar -zxf oras_0.16.0_*.tar.gz -C oras-install/ $ mv oras-install/oras /usr/local/bin/ $ rm -rf oras_0.16.0_*.tar.gz oras-install/
আপনার বাইনারি এটি চালানোর মাধ্যমে কাজ করে কিনা তা পরীক্ষা করুন oras version
আদেশ:
$ oras version 0.16.0
এখন আপনি ORAS ব্যবহার শুরু করতে প্রস্তুত।
ডকার হাবের সাথে ORAS ব্যবহার করা
ORAS শুধুমাত্র রেজিস্ট্রিগুলির সাথে সামঞ্জস্যপূর্ণ যেগুলি OCI আর্টিফ্যাক্ট স্পেসিফিকেশনের জন্য সমর্থন প্রয়োগ করেছে৷ এই তালিকায় এখন Amazon ECR, Azure, Google, এবং GitHub সহ বেশিরভাগ প্রধান বিক্রেতাদের অন্তর্ভুক্ত করা হয়েছে, সেইসাথে CNCF ডিস্ট্রিবিউশন ব্যবহার করে নিয়োজিত স্ব-হোস্টেড উদাহরণগুলি।
আমরা এই নিবন্ধটির জন্য ডকার হাব ব্যবহার করব কারণ এটি সবচেয়ে জনপ্রিয় রেজিস্ট্রি সমাধান। এটি নভেম্বর 2022-এ OCI আর্টিফ্যাক্টগুলির জন্য সম্পূর্ণ সমর্থন যোগ করেছে।
আপনার রেজিস্ট্রি লগ ইন করুন
ORAS স্বয়ংক্রিয়ভাবে আপনার পূর্বে যোগ করা রেজিস্ট্রি রেফারেন্সগুলি পুনরায় ব্যবহার করে ~/.docker/config.json
ফাইল। আপনার যদি ডকার হাবে সাইন ইন করতে হয়, আপনি উভয়ই চালাতে পারেন docker login
বা oras login
এটা করতে:
$ oras login -u username -p password_or_personal_access_token $ docker login -u username -p password_or_personal_access_token
তারপর রেজিস্ট্রিতে আপলোড করার জন্য একটি সাধারণ ফাইল তৈরি করুন। মনে রাখবেন, আপনি যে ধরনের সম্পদ পুশ করবেন তার উপর কোন সীমাবদ্ধতা নেই। এই উদাহরণটি একটি কল্পিত JSON ফাইল যা প্রকল্পের স্থিতি বর্ণনা করে, তবে আপনি আপনার ব্যবহারকারী বা বিকাশকারীদের জন্য উপযোগী যেকোনো কিছু আপলোড করতে পারেন।
$ echo '{"app": "oras-demo", "version": "1.1.0"}' > artifact.json
এখন আপনি ORAS CLI ব্যবহার করে আপনার ফাইল পুশ করতে প্রস্তুত।
আপনার শিল্পকর্ম ধাক্কা
এটি প্রতিস্থাপন করার পরে আপনার শিল্পকর্মটি পুশ করতে নিম্নলিখিত কমান্ডটি চালান <username>
আপনার প্রকৃত ডকার হাব ব্যবহারকারীর নামের সাথে:
$ oras push docker.io/<username>/oras-demo:1.1.0 \ artifact.json:application/json \ --artifact-type application/vnd.unknown.config.v1+json Uploading 7ac68d8d2a12 artifact.json Uploaded 7ac68d8d2a12 artifact.json Pushed docker.io/ilmiont/oras-demo:1.1.0 Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b
এই কমান্ডে কয়েকটি উল্লেখযোগ্য বিবরণ রয়েছে:
- প্রথম আর্গুমেন্টটি পুশ করার জন্য রেজিস্টার এবং আর্টিফ্যাক্টে বরাদ্দ করার জন্য ট্যাগকে সংজ্ঞায়িত করে। এটি একটি কন্টেইনার ইমেজ ট্যাগ পুশ করার অনুরূপ।
- অসদৃশ
docker
CLI, ORAS এর জন্য আপনাকে রেজিস্ট্রি URL লিখতে হবে (docker.io
ডকার হাবের জন্য)। ORAS হল একটি জেনেরিক টুল যা আপনি কী বা কোথায় চাপ দিচ্ছেন সে সম্পর্কে অনুমান করতে পারে না। - দ্বিতীয় যুক্তিটি আপনি যে ফাইলটিতে আপলোড করছেন তার পথটি নির্দিষ্ট করে
filename:content-type
বিন্যাস যেহেতু নমুনা ফাইলটি JSON, তাইapplication/json
বিষয়বস্তুর প্রকার নির্বাচন করা হয়েছে। - তৃতীয় আর্গুমেন্টটি ORAS আর্টিফ্যাক্ট টাইপ (মিডিয়া টাইপ) নির্দিষ্ট করে আপনার আর্টিফ্যাক্টে বরাদ্দ করার জন্য। একটি রেজিস্টার্ড আর্টিফ্যাক্ট টাইপ আপলোড করার সময় আপনাকে অবশ্যই একটি ডিফল্ট মিডিয়া টাইপ ব্যবহার করতে হবে, যেমন একটি হেলম চার্ট, কিন্তু ‘অজানা’ ডিফল্ট এই ডেমোর জন্য উপযুক্ত।
আপলোডের অগ্রগতি আপনার টার্মিনালে প্রদর্শিত হয়, একটি সাধারণ টার্মিনালের মতো docker push
. চেষ্টা করেছে oras repo tags
পুশ সম্পূর্ণ হয়েছে তা নিশ্চিত করার জন্য কমান্ড:
$ oras repo tags docker.io/<username>/oras-demo 1.1.0
ডকার হাব ব্যবহারকারী ইন্টারফেসে শিল্পকর্ম পরিচালনা করুন
আপনার শিল্পকর্ম ডকার হাব ওয়েবসাইটেও প্রদর্শিত হবে। সংগ্রহস্থল তালিকা আপনি দেখতে পাবেন Contains: Other
বোঝানোর জন্য যে সংগ্রহস্থলে একটি জেনেরিক আর্টিফ্যাক্ট রয়েছে। ধারক চিত্র সংগ্রহস্থল হিসাবে লেবেল করা হয় Contains: Image
.
বিবরণ দেখতে সংগ্রহস্থল নির্বাচন করুন, একটি বিবরণ যোগ করুন এবং সমস্ত উপলব্ধ ট্যাগ দেখতে. এটা ধারক ইমেজ সঙ্গে কাজ অনুরূপ.
আপনার শিল্পকর্ম আঁকা
এখন যেহেতু আপনার আর্টিফ্যাক্ট রেজিস্ট্রিতে উপলব্ধ, আপনি এখন অন্য মেশিনে স্যুইচ করতে পারেন এবং ORAS CLI ইনস্টল করার পদক্ষেপগুলি পুনরাবৃত্তি করতে পারেন এবং আপনার ডকার হাব অ্যাকাউন্টে লগইন করতে পারেন৷ একবার আপনি প্রমাণীকরণ করেছেন, ব্যবহার করুন oras pull
আপনার আর্টিফ্যাক্ট পুনরুদ্ধার করার আদেশ:
$ oras pull docker.io/<username>/oras-demo:1.1.0 Downloading 7ac68d8d2a12 artifact.json Downloaded 7ac68d8d2a12 artifact.json Pulled docker.io/ilmiont/oras-demo:1.1.0 Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b
আর্টিফ্যাক্টের ফাইলগুলি আপনার কাজের ডিরেক্টরিতে স্থাপন করা হয়েছে:
$ ls artifact.json $ cat artifact.json {"app": "demo-oras", "version": "1.1.0"}
আপনি আপনার কন্টেইনার রেজিস্ট্রি প্রদানকারী থেকে উপলব্ধ বিদ্যমান অবকাঠামো ব্যবহার করে আপনার অ্যাপ্লিকেশনের আর্টিফ্যাক্টগুলি বিতরণ করতে সফলভাবে ORAS ব্যবহার করেছেন।
ওভারভিউ
ORAS কনটেইনার ইমেজ রেজিস্ট্রিগুলিকে জেনেরিক ডিস্ট্রিবিউশন প্ল্যাটফর্মে রূপান্তরিত করে। আপনি আপনার অ্যাপ্লিকেশনের সাথে প্রাসঙ্গিক যেকোন আর্টিফ্যাক্ট পুশ করতে পারেন এবং ব্যবহারকারীরা একটি সামঞ্জস্যপূর্ণ প্রক্রিয়া ব্যবহার করে এটি পুনরুদ্ধার করতে পারেন। এটি একাধিক ডেলিভারি চ্যানেলের মধ্যে রক্ষণাবেক্ষণ, প্রকাশ এবং স্যুইচ করা এড়িয়ে যায়।
জনপ্রিয় ইকোসিস্টেম টুলেও ORAS সমর্থন যোগ করা হচ্ছে। হেলম আপনাকে তার ব্যবহার করে একটি ORAS রেজিস্টারে সরাসরি গ্রাফগুলি পুশ করতে দেয় helm push
যেমন কমান্ড। এটি আপনাকে চার্টটি ম্যানুয়ালি রপ্তানি করতে বাঁচায় যাতে আপনি এটি পুশ করতে পারেন oras push
. এটি আপনার জন্য সঠিক ORAS মিডিয়া টাইপ সেট করার যত্ন নেয়। আপনি ORAS সংহত করার জন্য আরও সরঞ্জাম আশা করতে পারেন যাতে আপনি সমস্ত ধরণের সামগ্রী সরাসরি আপনার কেন্দ্রীভূত রেজিস্ট্রিতে পুশ করতে পারেন।