
OCI2Git
[//]: # (ভৱিষ্যতৰ test.yaml ৰ বাবে mock) [//]: # ([](https://github.com/Virviil/oci2git/actions))
এখন Rust এপ্লিকেচন, যি container image (Docker, আদি) Git repository লৈ ৰূপান্তৰ কৰে। প্রতিটো container layer Git commit হিচাপে প্ৰতিনিধিত্ব কৰে, মূল image ৰ ইতিহাস আৰু গঠন সংৰক্ষণ কৰে।

বৈশিষ্ট্যসমূহ
- Docker image বিশ্লেষণ আৰু layer তথ্য উলিয়াই আনে
- প্রতিটো image layer commit হিচাপে প্ৰতিনিধিত্ব কৰা Git repository সৃষ্টি কৰে
- খালী layer (ENV, WORKDIR, আদি) খালী commit হিচাপে সমৰ্থন কৰে
- সম্পূর্ণ metadata Markdown ৰূপত উলিয়াই আনে
- বিভিন্ন container engine সমৰ্থনৰ বাবে বিস্তৃত স্থাপত্য
ব্যৱহাৰৰ ক্ষেত্ৰসমূহ
Layer Diffing
Container সমস্যাৰ troubleshooting কৰোঁতে, Git ৰ শক্তিশালী diffing ক্ষমতা ব্যৱহাৰ কৰি যিকোনো দুটা layer ৰ মাজত কি পৰিবৰ্তন হৈছে ঠিককৈ চিনাক্ত কৰিব পাৰি।git diff commit ৰ মাজত চলালে, ইঞ্জিনিয়াৰসকলে স্পষ্টকৈ চাব পাৰে কোন ফাইল যোগ, সংশোধন বা মচি পেলোৱা হৈছে, যাৰ দ্বাৰা প্ৰত্যেক Dockerfile instruction ৰ প্ৰভাৱ বুজা সহজ হয় আৰু সমস্যা থকা পৰিবৰ্তন চাব পাৰি।

Origin Tracking
git blame ব্যৱহাৰ কৰি, ডেভেলপাৰসকলে দ্রুতকৈ চাব পাৰে কোন layer এ নিৰ্দিষ্ট ফাইল বা কোডৰ line আনিছে। বিশেষকৈ configuration file বা dependency ৰ সমস্যাৰ নিৰ্ণয়ত এইটো মূল্যবান। প্রতিটো layer manually পৰীক্ষা নকৰি, যিকোনো ফাইলৰ উৎস layer আৰু Dockerfile instruction সহজে চাব পাৰি।File Lifecycle Tracking
OCI2Git এ আপোনাক container image ৰ ইতিহাসত নিৰ্দিষ্ট ফাইলৰ যাত্ৰা অনুসৰণ কৰিবলৈ সক্ষম কৰে। কোন সময়ত ফাইলটো সৃষ্টি হৈছিল, কিদৰে বিভিন্ন layerত সংশোধন হৈছিল, আৰু কেতিয়া মচি পেলোৱা হৈছিল - সকলো চাব পাৰি। এই বিস্তৃত দৃশ্যই বহু layerৰ মাজত নিজে নিজে পৰিবৰ্তন অনুসৰণ নকৰাকৈ ফাইল evolution বুজিবলৈ সহায় কৰে।আপোনাৰ container image ৰ ভিতৰত এজন ফাইলৰ ইতিহাস অনুসৰণ কৰিবলৈ — কেতিয়া সৃষ্টি, পৰিবৰ্তিত, বা মচি পেলোৱা হৈছিল — ৰূপান্তৰৰ পাছত এই Git command সমূহ ব্যৱহাৰ কৰিব পাৰি:
# Full history of a file (including renames)
git log --follow -- /rootfs/my/file/pathFirst appearance (i.e. creation) - see which layer introduced the file
git log --diff-filter=A -- /rootfs/my/file/pathAll changes made to the file (with diffs)
git log -p --follow -- /rootfs/my/file/pathWhen the file was deleted
git log --diff-filter=D -- /rootfs/my/file/pathShow short commit info (concise layer history)
git log --follow --oneline -- /rootfs/my/file/pathএই আদেশবোৰে যিকোনো ফাইলৰ সম্পূৰ্ণ ইতিহাসক কন্টেইনাৰ স্তৰৰ মাজেৰে সহজে অনুসৰণ কৰিবলৈ সক্ষম কৰে, স্তৰৰ টাৰবলসমূহ ম্যানুৱেলিভাৱে উলিয়াই তুলনা কৰাৰ জটিলতা নাথাকে।
বহু-স্তৰ বিশ্লেষণ
কেতিয়াবা আটাইতকৈ গুৰুত্বপূর্ণ তুলনাবোৰ বহু অপৰ্যায়ী স্তৰৰ পৰিৱর্তন পৰীক্ষা কৰাৰ পৰা আহে। OCI2Git ব্যৱহাৰ কৰি, আপোনোৱে Git ৰ তুলনামূলক টুলসমূহ ব্যৱহাৰ কৰি বহু নিৰ্মাণ স্তৰৰ মাজত উপাদানসমূহ কেনেদৰে বিকাশ হৈছে বিশ্লেষণ কৰিব পাৰে, যি ধৰণৰ ধাৰণা কেৱল সংলগ্ন স্তৰৰ ক্ষেত্ৰত দেখিবলৈ নোৱাৰা।স্তৰ অন্বেষণ
git checkout ব্যৱহাৰ কৰি যিকোনো নিৰ্দিষ্ট কমিটলৈ গতি কৰিলে, আপুনি কন্টেইনাৰৰ ফাইল চিস্টেম ঠিক সেই স্তৰত যিদৰে আছিল পৰীক্ষা কৰিব পাৰে। এইটো ডেভেলপাৰসকলক ছবিৰ সৃষ্টি প্ৰক্ৰিয়াৰ যিকোনো বিন্দুত ফাইল আৰু ডাইৰেক্টৰীৰ নিৰ্দিষ্ট অৱস্থা পৰীক্ষা কৰিবলৈ সক্ষম কৰে, যি ডিবাগিং বা কন্টেইনাৰৰ আচৰণ পৰীক্ষা কৰোঁতে অমূল্য প্ৰেক্ষাপট যোগান ধৰিছে।

বহু-ছবি বিশ্লেষণ
যেতিয়া একাধিক কন্টেইনাৰ ছবিত সাধাৰণ বংশধৰ থাকে, OCI2Git কেৱল ছবিসমূহ প্ৰকৃততে বিভাজিত হ'লে ব্রাঞ্চ সৃষ্টি কৰে। এইটো আপোনাক একেটা ৰেপজিটৰিত বহু সম্পৰ্কিত ছবি বিশ্লেষণ কৰিবলৈ সক্ষম কৰে আৰু তেওঁলোকৰ সাধাৰণ ইতিহাস সংৰক্ষণ কৰে।
# Convert first image to create the base repository
oci2git postgres:16.9-alpine3.21 -o alpConvert second image to the same output folder
oci2git nginx:1.28.0-alpine-slim -o alpOCI2Git স্বয়ংক্ৰিয়ভাৱে ছবিসমূহৰ মাজত ভাগ বতৰা হোৱা স্তৰসমূহ চিনাক্ত কৰে আৰু তেওঁলোকৰ সাধাৰণ ভিত্তি প্ৰতিফলিত কৰা এক শাখা কাঠামো সৃষ্টি কৰে। Git ইতিহাসত দেখুওৱা হ'ব:
- সকলো ভাগ বতৰা হোৱা স্তৰসমূহৰ সৈতে এটি সাধাৰণ মূল শাখা
- পৃথক শাখাসমূহ যি কেৱল ছবিসমূহ বাস্তৱিকভাৱে ভিন্ন হ'লে মাত্ৰ বিভক্ত হয়
- ছবিসমূহে ক'ত সাধাৰণ বংশানুক্ৰম ভাগ বতৰা কৰিছে আৰু ক'ত তেওঁলোকে অনন্য হৈ পৰিছে তাৰ স্পষ্ট ভিজুৱালাইজেশ্বন
- বুদ্ধিমান নকল ব্যৱস্থাপনা: একেবাৰেই একে ছবি দুবাৰ প্ৰক্ৰিয়াকৰণ হ'লে, এলগৰিদমে চূড়ান্ত মেটাডাটা কমিটৰ আগতে এইটো চিনাক্ত কৰে আৰু নকল শাখা সৃষ্টি কৰা এৰি দিয়ে
- ছবি পৰিয়াল বিশ্লেষণ: এটা ছবিৰ বিভিন্ন ভেৰিয়েন্ট (বিভিন্ন সংস্কৰণ, স্থাপত্য, বা কনফিগাৰেশ্বন) কেনেকৈ একে আনৰ সৈতে সম্পৰ্কিত তাৰ বুজ
- ভিত্তি ছবিৰ প্ৰভাৱ: ভিত্তি ছবিত সলনি কৰিলে বহুতো উদ্ভূত ছবিত কিদৰে প্ৰভাৱ পেলায় সেয়া স্পষ্টকৈ দেখা
- অপ্টিমাইজেশ্বন সুযোগ: ভাগ বতৰা হোৱা উপাদানসমূহ চিনাক্ত কৰা যি ছবিৰ ভেৰিয়েন্টসমূহৰ মাজত ভালদৰে ব্যৱহাৰ কৰিব পাৰি

অতিৰিক্ত ব্যৱহাৰ ক্ষেত্ৰ
- সুৰক্ষা অডিটিং: সংৱেদনশীল পেকেজ বা কনফিগাৰেশ্বন কেতিয়া অন্তর্ভুক্ত হৈছিল ঠিক চিনাক্ত কৰা আৰু বিশেষ নিৰ্মাণ নিৰ্দেশনাসমূহলৈ উল্টাই পোৱা।
- ছবি অপ্টিমাইজেশ্বন: স্তৰৰ গঠন বিশ্লেষণ কৰি অপ্রয়োজনীয় অপাৰেশ্বন বা ডাঙৰ ফাইল চিনাক্ত কৰা, যি সংহত কৰি ছবিৰ আকাৰ কমাব পাৰে।
- নির্ভৰশীলতা ব্যৱস্থাপনা: ছবি ইতিহাসত নিৰ্ভৰশীলতা কেতিয়া যোগ, উন্নীত, বা আঁতৰ কৰা হৈছে মনিটৰ কৰা।
- নির্মাণ প্ৰক্ৰিয়া উন্নতি: স্তৰৰ সংযোজন পৰীক্ষা কৰি Dockerfile নিৰ্দেশনাসমূহ অপ্টিমাইজ কৰি ভাল ক্যাচিং আৰু সৰু ছবি আকাৰ নিশ্চিত কৰা।
- আলাদা ছবিৰ তুলনা: বহুতো সম্পৰ্কিত ছবিক Git ৰিপ'জিট'ৰিলৈ ৰূপান্তৰ কৰা আৰু Git ৰ তুলনা টুল ব্যৱহাৰ কৰি তফাৎ আৰু সাধাৰণতা বিশ্লেষণ কৰা।
ইনষ্টলেশ্বন
উৎসৰ পৰা
# Clone the repository
git clone https://github.com/virviil/oci2git.git
cd oci2gitInstall locally
cargo install --path .Crates.io ৰ পৰা
cargo install oci2gitব্যৱহাৰ
oci2git [OPTIONS] আৰ্গুমেন্টসমূহ:
ৰূপান্তৰ কৰিবলৈ ছবি নাম (উদাহৰণস্বৰূপে, 'ubuntu:latest') অথবা টাৰ ইঞ্জিন ব্যৱহাৰ কৰাৰ সময়ত টাৰবলৰ পথ
বিকল্পসমূহ:
-o, --output গিট ৰেপ'জিটৰীৰ বাবে আউটপুট ডাইৰেক্টৰি [ডিফল্ট: ./container_repo]
-e, --engine ব্যৱহাৰ কৰিবলৈ কণ্টেইনাৰ ইঞ্জিন (docker, nerdctl, tar) [ডিফল্ট: docker]
-h, --help সহায় তথ্য ছাপ কৰক
-V, --version সংস্কৰণ তথ্য ছাপ কৰক
পৰিবেশ ভেৰিয়েব্লসমূহ:
TMPDIR ইন্টাৰমিডিয়েট ডাটা প্ৰসেছিংৰ বাবে ডিফল্ট স্থান সলনি কৰিবলৈ এই পৰিবেশ ভেৰিয়েব্লটো ছেট কৰক। এইটো প্লেটফৰ্ম-নির্ভৰ (উদাহৰণস্বৰূপে, ইউনিক্স/মেক'ত TMPDIR, উইণ্ড'জত TEMP বা TMP)।
উদাহৰণসমূহ
ডকৰ ইঞ্জিন ব্যৱহাৰ কৰি (ডিফল্ট):
oci2git -o ./ubuntu-repo ubuntu:latest
আজি ডাউনলোড কৰা ইমেজ টাৰবল ব্যৱহাৰ কৰি:oci2git -e tar -o ./ubuntu-repo /path/to/ubuntu-latest.tarটাৰ ইঞ্জিনে এটা বৈধ OCI ফৰ্মেট টাৰবল আশা কৰে, যি সাধাৰণতে docker save ব্যৱহাৰ কৰি সৃষ্টি কৰা হয়:
# Create a tarball from a local Docker image
docker save -o ubuntu-latest.tar ubuntu:latestConvert the tarball to a Git repository
oci2git -e tar -o ./ubuntu-repo ubuntu-latest.tarএইটো ./ubuntu-repo-ত এটা Git ৰেপ'জিট'ৰি সৃষ্টি কৰিব:
Image.md- Markdown ফৰ্মেটত চিত্ৰখনৰ সম্পূৰ্ণ মেটাডাটাrootfs/- কণ্টেইনাৰৰ পৰা ফাইলচিষ্টেমৰ সমগ্ৰ সামগ্ৰী
- প্ৰথম কমিটত কেৱল
Image.mdফাইলটো থাকে, য'ত সম্পূৰ্ণ মেটাডাটা থাকে - প্ৰতিটো পাছৰ কমিট মূল চিত্ৰৰ এটা লেয়াৰ প্ৰতিনিধিত্ব কৰে
- কমিটসমূহত Dockerfile-ৰ কমাণ্ড কমিট মেছেজ হিচাপে থাকে
ৰেপ'জিট'ৰি গঠন
repository/
├── .git/
├── Image.md # Complete image metadata
└── rootfs/ # Filesystem content from the containerআৱশ্যকতাসমূহ
- ৰাষ্ট ২০২১ সংস্কৰণ
- ডকৰ CLI (ডকৰ ইঞ্জিন সমৰ্থনৰ বাবে)
- গিট
লাইচেঞ্চ
MIT
[ডকুমেণ্টেশ্বন]: https://docs.rs/oci2git/
--- Tranlated By Open Ai Tx | Last indexed: 2025-12-12 ---