على CoreOS ، قم بإعداد سجل Docker الخاص بك

نعلم جميعًا ونحب Docker ، وهي منصة لإنشاء وإدارة وتوزيع حاويات التطبيقات عبر أجهزة متعددة. تقدم Docker Inc. خدمة لاستضافة حاويات مفتوحة المصدر ليتم تنزيلها (أو سحبها) مثل مستودع git المعروف باسم "Docker Registry". فكر في الأمر مثل GitHub لحاويات Docker.

ولكن ماذا لو كنت تريد استضافة السجل الخاص بك منفصلًا عن السجل العام؟ حسنًا ، فتحت Docker Inc. تطبيق التسجيل من مصدرها على GitHub.

سيأخذك هذا البرنامج التعليمي على الرغم من عملية إعداد سجل Docker خاص باستخدام CoreOS على VPS جديد.

CoreOS + Docker

لن نقضي الكثير من الوقت في مراجعة ما يمكن أن يفعله Docker و CoreOS تمامًا ، لأنه خارج نطاق هذا البرنامج التعليمي. في الأساس ، تم تصميم CoreOS لمجموعات كبيرة من الخوادم ، وهو صغير وسريع ويحصل على تحديثات أمان منتظمة تلقائيًا. نظام الملفات الجذر الخاص به هو أيضًا للقراءة فقط ، مما يعني أنه يجب عليك استخدام Docker لتشغيل أي نوع من البرامج غير المضمنة في التثبيت الأساسي.

وهذا يجعل Core OS نظام مضيف مثالي لـ Docker!

سحب وتشغيل أحدث تسجيل

قامت شركة Docker Inc. بتوفير التسجيل كصورة عالية المستوى ، وهذا يعني أنه يمكننا سحبها لأسفل بطريقة بسيطة:

docker pull registry

قد يستغرق ذلك بضع دقائق حسب سرعة الاتصال.

بالإضافة إلى كونها صورة عالية المستوى تعني أيضًا أنها تحصل على دعم وتحديثات منتظمة.

الآن دعونا نختبر التسجيل. يمكننا إنشاء حاوية جديدة باستخدام صورة التسجيل:

docker run -p 5000:5000 -d --name=basic_registry registry

بالنسبة لأولئك الذين لم يستخدموا Docker كثيرًا ، يشير -pالعلم إلى PORT، مما يعني أننا نعرض المنفذ 5000 من الحاوية إلى المنفذ المضيف 5000.

تشير -dالعلامة إلى أن daemonهذا سيؤدي إلى تشغيل الحاوية في الخلفية وعدم طباعة الإخراج إلى جلسة SSH الحالية ، ونريد أيضًا تسمية حاوية الاختبار الأساسية هذه باستخدام --nameالخيار حتى نتمكن من إدارتها بسهولة لاحقًا.

تأكد من تشغيل حاوية التسجيل الأساسية باستخدام docker ps. يجب أن يبدو الإخراج مشابهًا لما يلي:

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
edfb54e4a8c4        registry:0.8.1      "/bin/sh -c 'exec do   7 seconds ago       Up 6 seconds        0.0.0.0:5000->5000/tcp   basic_registry

أيضًا ، قم بزيارة http://YOUR_IP:5000في متصفح الويب الخاص بك ، ويجب أن تتلقى رسالة مثل ما يلي:

"docker-registry server (dev) (v0.8.1)"

لاحظ الكلمة devالواردة بين قوسين. هذا يعني أن الخادم يقوم حاليًا بتشغيل تكوين dev. سنلقي نظرة على المزيد من التكوين قريبًا.

لديك الآن سجل حاويات خاص بك (أساسي جدًا) قيد التشغيل! لكننا لم ننتهي بعد.

ربما ترغب في الحفاظ على هذا خاصًا من أعين المتطفلين ، أو ربما تخزين صورك على Amazon S3 بدلاً من التخزين المحلي. دعنا نستعرض خيارات التكوين المختلفة في القسم التالي.

قبل أن نمضي قدمًا ، دعنا نقتل حاوية الاختبار حتى لا نواجه منافذ متضاربة.

docker kill basic_registry

تكوين التسجيل

هناك طريقتان لتمرير التكوين إلى Docker Registry. تتمثل إحدى الطرق في تمرير متغيرات البيئة إلى حاوية جديدة ، والأخرى هي إضافة ملف تكوين.

إليك بعض خيارات التكوين الشائعة التي سنستخدمها:

  • loglevel- الحد الأدنى من المعلومات لتسجيل الدخول إلى وحدة التحكم. الافتراضي هو info.
  • standalone- هل يجب أن يعمل هذا السجل من تلقاء نفسه؟ (لا يستعلم أبداً السجل العام.) الافتراضي هو true.
  • index_endpoint- إذا لم تكن قائمة بذاتها ، فما الفهرس الآخر الذي سنستعلم عنه؟ افتراضي index.docker.io.
  • cacheو cache_lru- الخيارات المتعلقة باستخدام ذاكرة التخزين المؤقت Redis للملفات الصغيرة ، سنتناولها لاحقًا.
  • storage- ما خلفية التخزين التي يجب أن نستخدمها لهذا الخادم؟ (في هذا البرنامج التعليمي سنستخدم المحلي).
  • storage_path - في حالة استخدام التخزين المحلي ، ما الدليل الذي يجب استخدامه للاحتفاظ بالملفات؟

قبل أن نبدأ في التهيئة ، نحتاج إلى ملف أساسي للعمل معه. سيعمل الملف من مستودع Docker Registry على GitHub بشكل جيد:

wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml

يجب حفظ الملف بنجاح مع ناتج مثل:

2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]

عظيم! الآن يمكننا تعديل هذا الملف ليناسب احتياجاتنا.

إن محرر النصوص الوحيد الذي يأتي مع Core OS هو vim، ولكن لا تقلق إذا لم تستخدمه من قبل ، فسيشرح هذا خطوة بخطوة ما يجب تحريره وكيفية القيام بذلك.

vim config_sample.yml

بمجرد فتح الملف ، اضغط على Iالزاوية اليمنى السفلى يجب أن تعرض: -- INSERT --لوضع الإدراج. قم بالتمرير إلى أسفل الملف باستخدام مفاتيح الأسهم الخاصة بك ، من المفترض أن ترى قسمًا يسمى prod.

سنقوم بتغيير الخطين ، التغييرات أدناه

prod:
    <<: *local
    storage_path: _env:STORAGE_PATH:/data

ما قمنا به هو تغيير prodالتكوين للاستخلاص من localالقسم بدلاً من s3القسم. ثم استبدلنا storage_pathلاستخدام المسار /dataداخل الحاوية الجديدة.

بمجرد التأكد من صحة جميع التغييرات ، اضغط ESCعلى للخروج من وضع الإدراج والنوع :wq(وهذا يعني كتابة التغييرات في الملف ، وإنهاء vim.)

الآن دعونا نعيد تسمية الملف إلى مجرد config.yml

mv config_sample.yml config.yml

إعادة التخزين المؤقت Redis (اختياري)

إذا كنت ترغب في استخدام redis لتسريع تسجيل الحاوية ، فببساطة سحب حاوية جديدة من السجل العام وإضافة بضعة أسطر إضافية من التكوين.

أولاً ، اسحب صورة المستوى الأعلى لـ Redis:

docker pull redis

بمجرد سحب الصورة بنجاح ، يمكننا تشغيلها وتسميتها تمامًا كما فعلنا في سجل الاختبار:

docker run -d --name registry-redis redis

نظرًا لأن redis في الذاكرة ، فإننا لا نحتاج إلى إجراء أي تكوين لها ، حيث سنربطها بحاوية التسجيل في خطوات لاحقة.

مرة أخرى ، تأكد من تشغيله باستخدام docker ps:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
54f65641eccf        redis:2.8           "redis-server"      2 seconds ago       Up 1 seconds        6379/tcp            registry-redis

الآن أعد فتح config.ymlفي vimوأدخل وضع الإدراج تمامًا مثل المرة الأولى التي قمنا بتحريرها.

أضف الأسطر التالية أسفل prodالقسم ، مع التأكد من وضع مسافة بادئة بشكل صحيح. هذه المرة نحن فقط نضيف cacheو cache_lru.

cache:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 0

cache_lru:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 1

متغيرات البيئة REDIS_PORT_6379_TCP_ADDRو REDIS_PORT_6379_TCP_PORTيتم تمريرها إلى الحاوية التسجيل على الربط مع الحاوية رديس.

مع ذلك ، لديك الآن إعداد حاوية Redis ستعمل جنبًا إلى جنب مع حاوية التسجيل. الآن على بناء التسجيل!

بناء الحاوية

لدينا كل مجموعة التهيئة وجاهزة ، والآن نحتاج إلى إنشاء حاوية التسجيل الفعلية.

أطلق النار vim Dockerfileلإنشاء ملف Dockerfile جديد. أدخل وضع الإدراج واتبع التعديلات أدناه.

FROM registry:latest

# Add the custom configuration file we made 
ADD ./config.yml /docker-registry/config/config.yml

# Create the data directory
RUN mkdir /data

# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml

# Make sure we use the prod configuration settings 
env SETTINGS_FLAVOR prod

ما فعلناه أعلاه هو في الأساس توسيع صورة التسجيل بحيث يستخدم ملف التكوين والإعدادات الخاصة بنا. ملف Dockerfile عبارة عن مجموعة من تعليمات الإنشاء ليقوم Docker بقراءتها وإنشائها. إذا كنت ترغب في معرفة المزيد عن Dockerfiles وصيغتها ، ألق نظرة على وثائق موقع Docker الرسمية.

بعد ذلك نحتاج إلى بناء الحاوية للاستخدام.

docker build -t my_registry .


Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon 
Step 0 : FROM registry
 ---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
 ---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
 ---> Running in a090f0bdbfd1
 ---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
 ---> Running in 565b5bfb2b22
 ---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
 ---> Running in 31a92847b851
 ---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374

الآن نحن مستعدون للتشغيل!

لنقم بإنشاء دليل على نظامنا المضيف للتركيب في الحاوية كوحدة /dataالتخزين.

mkdir registry-data

الآن يمكننا تدوير حاوية جديدة. إذا كنت تخطط لاستخدام ذاكرة التخزين المؤقت Redis ، فاستخدم الأمر الثاني أدناه.

# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry

# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry

للتأكد من أن الخادم يعمل بشكل صحيح ، قم بزيارة http://YOUR_IP:5000. سترى الرسالة التالية:

"docker-registry server (prod) (v0.8.1)"

لاحظ (prod)معنى تغييرات التكوين لدينا كانت ناجحة!

تكوين عميل Docker المحلي

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

docker login YOUR_IP:5000

أدخل اسم مستخدم وكلمة مرور (فكر في هذا مثل إنشاء حساب جديد) وتجاهل الرسالة التي تنص على أنه يجب عليك تنشيطها.

بعد ذلك ، لنقم بسحب صورة المخزون ، ودفعها إلى مستودعنا الخاص.

# Pull the busybox image from the public registry
docker pull busybox

# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox

# Push it to our newly made registry
docker push YOUR_IP:5000/busybox

إذا تم دفع كل شيء بشكل صحيح ، فيجب أن تكون الرسالة النهائية على غرار:

Pushing tag for rev [a9eb17255234] on 

تهانينا! لقد أعددت مستودع الأرصفة الخاص بك.

ماذا بعد؟

إليك بعض الأفكار حول كيفية تحسين السجل الخاص الجديد:

  • عكس الوكيل باستخدام Nginx أو Apache لوضع أمان إضافي أمامه ، مثل مصادقة HTTP البسيطة.
  • احصل على مجال لخادمك وقم بإعداده حتى تتمكن من الوصول إلى التسجيل الخاص بك باستخدام شيء مثل: register.mysite.com
  • قم بشراء (أو توقيع ذاتي) شهادة SSL لإضافة المزيد من الحماية إذا كانت حاوياتك تحتوي على معلومات حساسة.


Leave a Comment

نشر Kubernetes مع Kubeadm على CentOS 7

نشر Kubernetes مع Kubeadm على CentOS 7

نظرة عامة تهدف هذه المقالة إلى مساعدتك في إنشاء مجموعة Kubernetes وتشغيلها باستخدام kubeadm في لمح البصر. سيقوم هذا الدليل بنشر خادمين في

نشر تطبيق PHP باستخدام Docker-compose

نشر تطبيق PHP باستخدام Docker-compose

عادة ما تتكون تطبيقات PHP من خادم ويب ونظام قاعدة بيانات علائقية ومترجم لغة نفسه. في هذا البرنامج التعليمي سنكون leveragin

قم بتثبيت Docker CE على Ubuntu 18.04

قم بتثبيت Docker CE على Ubuntu 18.04

مقدمة Docker هو تطبيق يسمح لنا بنشر البرامج التي يتم تشغيلها كحاويات. وقد كتب بلغة البرمجة Go الشهيرة

نشر تطبيق Node.js باستخدام Docker

نشر تطبيق Node.js باستخدام Docker

ستوضح لك هذه المقالة كيفية نشر تطبيق Node داخل حاوية Docker. ملاحظة: يفترض هذا البرنامج التعليمي أنك قمت بتثبيت Docker وقراءته

نشر وإدارة حاويات LXC بأمان على Ubuntu 14.04

نشر وإدارة حاويات LXC بأمان على Ubuntu 14.04

حاويات LXC (حاويات Linux) هي إحدى ميزات نظام التشغيل في Linux والتي يمكن استخدامها لتشغيل العديد من أنظمة Linux المعزولة على مضيف واحد. هذه

ابدأ مع Kubernetes على CentOS 7

ابدأ مع Kubernetes على CentOS 7

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

قم بتثبيت Rancher على Ubuntu 16.04

قم بتثبيت Rancher على Ubuntu 16.04

استخدام نظام مختلف؟ مقدمة Rancher هي منصة مفتوحة المصدر لتشغيل الحاويات وبناء خدمة حاويات خاصة. رانشر هو القاعدة

تثبيت Docker-compose على CoreOS

تثبيت Docker-compose على CoreOS

تشرح هذه المقالة كيفية تثبيت Docker-compose على CoreOS. في CoreOS ، المجلد / usr / غير قابل للتغيير بحيث لا يتو��ر المسار القياسي / usr / local / bin

قم بتثبيت Rancher على CentOS 7

قم بتثبيت Rancher على CentOS 7

استخدام نظام مختلف؟ مقدمة Rancher هي منصة مفتوحة المصدر لتشغيل الحاويات وبناء خدمة حاويات خاصة. رانشر هو القاعدة

جلسة مثبتة مع سرب Docker (CE) على CentOS 7

جلسة مثبتة مع سرب Docker (CE) على CentOS 7

استخدام نظام مختلف؟ مقدمة يحول Docker Swarm خوادمك الفردية إلى مجموعة من أجهزة الكمبيوتر ، مما يسهل القياس والتوافر العالي

تثبيت Docker على CentOS 7

تثبيت Docker على CentOS 7

استخدام نظام مختلف؟ Docker هو تطبيق يسمح بنشر البرامج داخل حاويات افتراضية. تمت كتابته في برنامج Go

قم بتثبيت Rancher Server على RancherOS

قم بتثبيت Rancher Server على RancherOS

نظرة عامة RancherOS هو نظام تشغيل خفيف الوزن بشكل لا يصدق (حوالي 60 ميجا بايت فقط) يقوم بتشغيل برنامج Docker daemon باسم PID 0 لتشغيل خدمات النظام

جلسة مثبتة مع Docker Swarm (CE) على دبيان 9

جلسة مثبتة مع Docker Swarm (CE) على دبيان 9

استخدام نظام مختلف؟ مقدمة يحول Docker Swarm خوادمك الفردية إلى مجموعة من أجهزة الكمبيوتر ؛ تسهيل التوسع ، وتوافر عالية

كيفية استخدام Docker: إنشاء أول حاوية Docker

كيفية استخدام Docker: إنشاء أول حاوية Docker

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

موازنة التحميل مع عامل الميناء

موازنة التحميل مع عامل الميناء

عند تشغيل تطبيق ويب ، تحتاج عادةً إلى تحقيق أقصى استفادة من مواردك دون الحاجة إلى تحويل البرنامج الخاص بك لاستخدام مؤشرات متعددة

ابدأ مع SQL Server 2017 (MS-SQL) على CentOS 7 مع Docker

ابدأ مع SQL Server 2017 (MS-SQL) على CentOS 7 مع Docker

المتطلبات الأساسية محرك Docker 1.8+. 4 جيجابايت على الأقل من مساحة القرص. 4 غيغابايت على الأقل من ذاكرة الوصول العشوائي. الخطوة 1. تثبيت Docker من أجل تثبيت SQL-Server ، Docker mus

تثبيت Docker CE على دبيان 9

تثبيت Docker CE على دبيان 9

استخدام نظام مختلف؟ مقدمة Docker هو تطبيق يسمح بنشر البرامج داخل حاويات افتراضية. هو مكتوب في G

تثبيت Docker على Ubuntu 14.04

تثبيت Docker على Ubuntu 14.04

استخدام نظام مختلف؟ Docker هو تطبيق يسمح بنشر البرامج التي يتم تشغيلها كحاويات. وقد كتب في برنامج Go الشهير

إنشاء سرب Docker على Alpine Linux 3.9.0

إنشاء سرب Docker على Alpine Linux 3.9.0

مقدمة سيوضح لك هذا الدليل كيفية إنشاء وتكوين سرب Docker باستخدام عدة خوادم Alpine Linux 3.9.0 و Portainer. يرجى الانتباه إلى ذلك

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد