تكنولوجيا

كيفية إنشاء سجل Docker الخاص بك – CloudSavvy IT

يوفر لك تشغيل سجل Docker الخاص بك موقعًا خاصًا لتخزين صور Docker. سواء كنت تعمل في بيئة شركة أو تريد تقليل اعتمادك على Docker Hub ، يمكنك بدء نشر السجل وتشغيله من خلال الطرق التالية.

Docker Registry هو نظام من جانب الخادم لتخزين وفهرسة صور Docker. يمكنك “دفع” الصورة المبنية مسبقًا إلى التسجيل. ثم يمكن للمستخدمين الآخرين “سحبهم” لتشغيلهم دون الحاجة إلى الوصول إلى Dockerfile الأصلي.

أشهر سجل عام هو Docker Hub. باستخدام السجل الخاص بك ، يمكنك التحكم في طريقة تخزين الصور والوصول إليها. يمكنه أيضًا تسهيل التكامل مع أدوات الجهات الخارجية.

تتوفر خدمات الاستضافة التي تتيح لك إنشاء عمليات تثبيت السجل بسرعة. يركز هذا الدليل على الاستضافة الذاتية للسجل على الخادم الخاص بك. الشرط الأساسي الوحيد هو أنك تحتاج إلى تثبيت Docker و docker-compose على الكمبيوتر الذي سيستضيف السجل.

قم بتشغيل التسجيل

يتم توزيع خادم Docker Registry كصورة Docker الخاصة به. يمكنك الحصول عليه من Docker Hub. يتم عرض الخادم على المنفذ 5000 ؛ تحتاج إلى ربط منفذ المضيف بمنفذ المضيف هذا حتى يتمكن العميل من الاتصال.

يجب عليك أيضًا إعداد وحدة تخزين بحيث يمكن لـ Docker Hub تخزين الصورة التي تم تحميلها بشكل دائم. تأكد من وجود مساحة خالية كافية على المضيف. يمكن أن ينمو التسجيل الذي يتم استخدامه بشكل نشط بسرعة.

قم أولاً بإنشاء ملف docker-compose.yml ملف لوصف النشر الخاص بك. يمكنك ضبط المنفذ ومسار نظام الملفات لمطابقة تفضيلاتك. سيجعل هذا المثال التسجيل يمكن الوصول إليه على المنفذ 5000.سيتم تخزين الصورة في data مجلد في دليل العمل.

version: "3"
services:
  registry:
      image: registry:2
      ports:
        - 5000:5000
      environment:
        - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
      restart: unless-stopped
      volumes:
        - ./data:/data

احفظ الملف وقم بالتشغيل docker-compose up -d ابدأ التسجيل. سيقوم docker-compose باستخراج صورة التسجيل من Docker Hub. بعد ذلك ، ستبدأ حاوية جديدة مع التكوين الخاص بك.

الوصول إلى نموذج التسجيل الخاص بك

يجب أن تكون الآن قادرًا على بدء استخدام التسجيل. ضع علامة على الصورة بالمسار الذي تم حله في السجل الخاص بك.يمكنك استخدامها localhost إذا كنت تستخدم خادم التسجيل نفسه. ثم يجب أن تكون قادرًا على دفع الصورة إلى التسجيل.

docker tag my-image localhost:5000/my-image
docker push localhost:5000/my-image

ستكون الصورة متاحة الآن في التسجيل.إذا قمت بفحص ملف data في المجلد ، سترى الطبقات التي تتكون منها الصورة.يمكنك سحبها من كمبيوتر آخر باستخدام docker pull.بدلا من localhost استخدم عنوان الشبكة للخادم الذي يقوم بتشغيل السجل.

قم بإعداد المصادقة

التسجيل حاليا غير آمن. يمكن لأي شخص سحب ودفع الصور! دعنا نحل هذه المشكلة عن طريق إعداد المصادقة.بعد اكتمال التكوين ، تحتاج إلى استخدام docker login قبل التفاعل مع التسجيل.

تستخدم طريقة المصادقة الافتراضية لـ Docker Registry مصادقة HTTP الأساسية.تحتاج إلى إنشاء ملف htpasswd من الأفضل تنفيذ الملف باستخدام الأمر المقدم بواسطة apache2-utils.

sudo apt install apache2-utils
mkdir auth
htpasswd -Bc auth/.htpasswd my-username

سيؤدي هذا إلى إنشاء ملف مصادقة للمستخدم my-username. سيُطلب منك تقديم كلمة مرور.هذه htpasswd سيتم كتابة الملف في دليل العمل كما هو موضح أدناه: auth/.htpasswd.

قم بتحديث ملف docker-compose.yml تكوين نظام المصادقة.يجب تحديد نوع المصادقة المستخدمة و htpasswd ملف. سيحتاج هذا إلى التثبيت كوحدة تخزين جديدة.

version: "3"
services:
  registry:
      image: registry:2
      ports:
        - 5000:5000
      environment:
        - REGISTRY_AUTH: htpasswd
        - REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
        - REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd
        - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
      restart: unless-stopped
      volumes:
        - ./auth:/auth
        - ./data:/data

يركض docker-compose up -d --force-recreate أعد إنشاء حاوية التسجيل قيد التشغيل بالتكوين الجديد. يجب أن تجد أن Docker CLI يرفض الآن السماح لك بالتفاعل مع السجل.

لاستعادة الوصول ، قم بتشغيل docker login localhost:5000. إذا كنت لا تقوم بتشغيل Docker على نفس الجهاز ، فستحتاج إلى ضبط URI الخاص بالسجل. سيطالبك Docker بتوفير اسم مستخدم وكلمة مرور.استخدم القيمة التي حددتها عند إنشاء الحملة .htpasswd ملف.

بعد المصادقة الناجحة ، ستتمكن من البدء في دفع الصور وسحبها مرة أخرى. يخزن Docker بيانات الاعتماد الخاصة بك مؤقتًا ، لذلك لا تحتاج إلى تكرار المصادقة حتى تقوم بذلك docker logout.

قم بإعداد SSL

تحتاج إلى إضافة شهادات SSL لجميع الاتصالات باستثناء الاتصال الأساسي localhost. يمكنك إضافة شهادة SSL إلى السجل عن طريق تثبيت الشهادة في وحدة التخزين وتعيين متغيرات البيئة الأخرى. بشكل عام ، يجب عليك تحديث تكوين المنفذ بحيث يستمع السجل إلى منفذ HTTPS الافتراضي 443.

version: "3"
services:
  registry:
      image: registry:2
      ports:
        - 443:5000
      environment:
        - REGISTRY_AUTH: htpasswd
        - REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
        - REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd
        - REGISTRY_HTTP_ADDR: 0.0.0.0:443
        - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/cert.crt
        - REGISTRY_HTTP_TLS_KEY=/certs/cert.key
        - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
      restart: unless-stopped
      volumes:
        - ./auth:/auth
        - ./certs:/certs
        - ./data:/data

أضف ملف الشهادة الخاص بك إلى certs ثم أعد تشغيل التسجيل. يجب أن يستخدم ملف الشهادة المقدم لدعم HTTPS.

SSL عبر LetsEncrypt

يحتوي خادم التسجيل على دعم مدمج لـ “Let’s Encrypt”. يتيح لك ذلك إنشاء شهادات SSL وتجديدها تلقائيًا.لاستخدام “Let’s Encrypt” ، أنت يجب أن قم بفضح نموذج التسجيل الخاص بك على المنفذ 443.

اقامة REGISTRY_HTTP_TLS_LETSENCRYPT_EMAIL مع REGISTRY_HTTP_TLS_LETSENCRYPT_HOSTS متغيرات البيئة لإضافة دعم TLS إلى السجل الخاص بك. لنقم بتشفير جهة الاتصال التي ستستخدم عنوان البريد الإلكتروني كشهادة SSL.

version: "3"
services:
  registry:
      image: registry:2
      ports:
        - 443:5000
      environment:
        - REGISTRY_AUTH: htpasswd
        - REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
        - REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd
        - REGISTRY_HTTP_TLS_LETSENCRYPT_EMAIL: example@example.com
        - REGISTRY_HTTP_TLS_LETSENCRYPT_HOSTS: [my-registry.com]
        - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
      restart: unless-stopped
      volumes:
        - ./auth:/auth
        - ./certs:/certs
        - ./data:/data

أعد إنشاء الحاوية docker-compose up -d --force-recreate تطبيق التغييرات. سيستخدم نموذج التسجيل “Let’s Encrypt” للحصول على شهادة SSL للمجال المحدد. قد تستغرق الشهادة بضع دقائق.

طرق النشر الأخرى

يعد النشر باستخدام docker-compose و HTTP Basic Auth و Let’s Encrypt أسهل طريقة لتشغيل سجل حاوية خاص. ومع ذلك ، هناك خيارات أخرى متاحة ، خاصة إذا كنت تريد المزيد من التحكم المتقدم في الوصول.

لا يمكن استخدام المصادقة الأساسية لتوسيع نطاق استخدام عدد قليل من المستخدمين. وكبديل لذلك ، يدعم الخادم إجراءات المصادقة المفوضة التي تعتمد على خوادم الرموز الخارجية. تم تصميم هذا للحلول التي يجب أن تكون متكاملة بإحكام مع نظام التحكم في الوصول للمؤسسة.

لا يُطبِّق خادم التسجيل نفسه مصادقة الرمز المميز. تحاول مشاريع مثل docker_auth إضافة هذا الجزء المفقود لتوفير نظام مصادقة ناضج يمكن نشره مع السجل الرئيسي.

تم تصميم المشروع البديل لتسهيل إدارة السجل بدون تسجيل أوامر المحطة الطرفية اليدوية. Portus هو مشروع SUSE يوفر واجهة ويب أمامية ونظام مصادقة المستخدم الخاص به.

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى