عن المشروع
Unregistry هي سجل صور حاويات خفيف يخزن ويقدم الصور مباشرة من تخزين Docker daemon (مخزن صور containerd). صُممت لإزالة الحاجة إلى سجل خارجي عند نقل الصور بين الأجهزة.
يوفر المشروع أمر إضافة لسطر أوامر Docker، `docker pussh` (الحرف الإضافي 's' يرمز إلى SSH)، والذي يدفع الصور مباشرة إلى خادم Docker بعيد عبر SSH. يتم نقل الطبقات المفقودة فقط على الجانب البعيد، وهو ما يصفه README بأنه يجعل العملية سريعة وفعالة.
كيف يعمل، وفقًا لـ README: ينشئ الأمر نفق SSH إلى الخادم البعيد، ويبدأ حاوية unregistry مؤقتة هناك، ويعيد توجيه منفذ localhost عشوائي إلى منفذ unregistry عبر النفق، وينفذ `docker push` إلى unregistry من خلال ذلك المنفذ المعاد توجيهه (ناقلاً فقط الطبقات غير الموجودة بالفعل عن بُعد)، ثم يوقف حاوية unregistry ويغلق النفق. تصبح الصورة المنقولة متاحة على Docker daemon البعيد. يقارن README الأسلوب بـ rsync لصور Docker.
الدافع: يسرد README البدائل الشائعة وعيوبها — السجلات العامة (كشف الكود أو مستودعات خاصة مدفوعة)، السجلات المستضافة ذاتيًا (خدمة إضافية للصيانة والتأمين)، `docker save | ssh ... docker load` (ينقل الصورة كاملة حتى عندما تكون معظم الطبقات موجودة بالفعل عن بُعد)، وإعادة البناء عن بُعد (إهدار الوقت والموارد). أُنشئ Unregistry في الأصل لـ Uncloud، وهي أداة لنشر الحاويات عبر مضيفات Docker متعددة.
المتطلبات: محليًا، Docker CLI مع دعم الإضافات (Docker 19.03+) وعميل OpenSSH. على الخادم البعيد، يجب تثبيت Docker وتشغيله، ويجب أن يكون مستخدم SSH قادرًا على تشغيل أوامر docker (جذر أو مستخدم في مجموعة docker)، ويلزم `sudo docker` بدون كلمة مرور إذا كان sudo مطلوبًا. يحتاج الخادم إلى وصول إلى الإنترنت إلى ghcr.io لسحب صورة unregistry عند أول استخدام، إلا إذا تم تحميل الصورة مسبقًا يدويًا للبيئات المعزولة أو المقيدة. تحتاج حاوية unregistry إلى الوصول إلى مقبس containerd في /run/containerd/containerd.sock وتعمل كجذر.
خيارات التثبيت الموثقة: Homebrew (`brew install psviderski/tap/docker-pussh`، بالإضافة إلى رابط رمزي في ~/.docker/cli-plugins)، تنزيل مباشر لسكربت docker-pussh في دليل الإضافات، وحزم Debian غير رسمية تُصان في مستودع منفصل. لا يُدعم Windows حاليًا، على الرغم من اقتراح WSL 2 مع تعليمات Linux. يمكن التحقق من التثبيت باستخدام `docker pussh --help`.
موضوع تكوين بارز هو مخزن صور containerd. يخزن Unregistry الصور في مخزن صور containerd، لكن افتراضيًا يحتفظ Docker بطبقة تخزين منفصلة خاصة به. مع تمكين مخزن صور containerd في Docker، تكون الصور المدفوعة متاحة فورًا لـ Docker دون تكرار وعمليات pussh أسرع. بدونه، ينفذ pussh `docker pull` إضافيًا على المضيف البعيد، وتُخزن الصور مرتين، ويمكن أن تتراكم صور containerd غير المُدارة؛ يُظهر README `ctr -n moby images ls` و `ctr -n moby images rm` للتنظيف اليدوي. يُوثق تمكين مخزن صور containerd على أنه يسبب فقدانًا مؤقتًا للصور والحاويات التي أُنشئت مع برنامج تشغيل التخزين الكلاسيكي.
تتضمن أمثلة الاستخدام الدفع إلى مضيف بعيد، ومصادقة مفتاح SSH مع `-i`، ومنفذ SSH مخصص، وملف تكوين SSH مخصص مع `-F`، واختيار منصة للصور متعددة المنصات (يتطلب مخزن صور containerd محليًا)، وتجاوز إصدار صورة unregistry عبر متغير البيئة UNREGISTRY_IMAGE. حالات الاستخدام الموثقة هي النشر إلى خوادم الإنتاج، وخطوط CI/CD، وبيئات homelab أو المعزولة. يمكن أيضًا تشغيل Unregistry بشكل مستقل كسجل محلي على المنفذ 5000 عن طريق تركيب مقبس containerd.
يربط README مشاريع خارجية: إجراء GitHub لدفع الصور باستخدام docker-pussh، وإجراء GitHub لتثبيت الإضافة، وأداة Python لتنظيف الصور في السجلات المستضافة ذاتيًا. ينسب الفضل إلى Spegel كإلهام لاستخدام مخزن صور containerd كخلفية سجل وإلى Docker Distribution كتنفيذ السجل الذي يستند إليه unregistry.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.