سلسلة ويبينار: البدء مع الحاويات

هذا المقال يتضمن السلسلة الالعلمية الالكترونيةحول تنفيذ وإدارة العمليات المكونة في السحابة. يقوم هذا المجموعة بالبناء على الأساسيات المتعلقة بالبلاكس, بما في ذلك إدارة دورة البلاكس, تنفيذ تطبيقات متعددة البلاكس, تنمية العمليات, وفهم Kubernetes, ويشير إلى الأفضل الممارسات لتشغيل التطبيقات الحالية.

يشمل هذا التوريتور ما يحتوي عليه المبادر الأول في السلسلة، تعلم البدء بالبلاكس.

تقديم

Docker هو منصة لتنفيذ وإدارة تطبيقات مكونة من البلاكس. تتمتع البلاكس بشكل شائع بين المطورين والمسؤولين والمهندسين الأوليين بسبب المرونة التي تقدمها.

يتمكن Docker من ثلاث components أساسيين:

  • محرك Docker
  • أدوات Docker
  • مخزون Docker

يقدم محرك Docker القدرات الأساسية لإدارة البلاكس. يتفاعل مع نظام التشغيل اللينكسي الخفيف الذي يعرض أبعاد بسيطة للتعامل مع دورة حياة البلاكس.

تتكون أدوات Docker مجموعة من الأدوات الخطوط السريرية التي تتحدث إلى الAPI المعروض من قبل محرك Docker. يستخدمونها لتشغيل البلاكس، إنشاء صور جديدة، تكوين التخزين والشبكات، والقيام بعدة عمليات تؤثر على دورة حياة البلاكس.

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

في نهاية هذا الدليل، ستكون قد قمت بتثبيت Docker على Droplet DigitalOcean، وإدارة الحاويات، والعمل مع الصور، وإضافة الاستمرارية، وإعداد سجل خاص.

المتطلبات السابقة

لاتباع هذا الدليل، ستحتاج إلى:

بشكل افتراضي، يتطلب الأمر docker صلاحيات جذرية. ومع ذلك، يمكنك تنفيذ الأمر دون بادئة sudo عن طريق تشغيل docker كمستخدم في المجموعة docker.

لتكوين Droplet الخاص بك بهذه الطريقة، قم بتشغيل الأمر sudo usermod -aG docker ${USER}. هذا سيضيف المستخدم الحالي إلى المجموعة docker. ثم، قم بتشغيل الأمر su - ${USER} لتطبيق عضوية المجموعة الجديدة.

يتوقع هذا الدليل أن يكون الخادم الخاص بك مكون لتشغيل الأمر docker دون بادئة sudo.

الخطوة 1 — تثبيت Docker

بعد الاتصال بـ SSH إلى Droplet، قم بتشغيل الأوامر التالية لإزالة أي حزم مرتبطة بـ Docker قد تكون مثبتة بالفعل ومن ثم تثبيت Docker من المستودع الرسمي:

  1. sudo apt-get remove docker docker-engine docker.io
  2. sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  3. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  4. sudo apt-key fingerprint 0EBFCD88
  5. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  6. sudo apt-get update
  7. sudo apt-get install -y docker-ce

بعد تثبيت Docker، تحقق من التثبيت باستخدام الأوامر التالية:

  1. docker info

الأمر المذكور أعلاه يعرض تفاصيل محرك Docker المنشأ في البيئة. الأمر التالي يتحقق من أن أدوات Docker مثبتة ومهيأة بشكل صحيح. يجب أن يطبع إصدار كلا محرك Docker والأدوات.

  1. docker version

##الخطوة 2 — تشغيل الحاويات

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

للبحث عن صورة تحت اسم hello-world، أدر الأمر التالي:

  1. docker search hello-world

قد يكون هناك عدة صور تتطابق مع الاسم hello-world. اختر التي تحتوي على أكبر عدد من النجوم، مما يشير إلى شعبية الصورة.

تحقق من الصور المتاحة في بيئتك المحلية باستخدام الأمر التالي:

  1. docker images

لأننا لم نقم بتشغيل أي حاويات حتى الآن، لن يكون هناك أي صور. يمكننا الآن تنزيل الصورة وتشغيلها محلياً:

  1. docker pull hello-world
  2. docker run hello-world

إذا قمنا بتنفيذ الأمر docker run بدون سحب الصورة، سيسحب محرك Docker الصورة أولاً ثم يقوم بتشغيلها. تشغيل الأمر docker images مرة أخرى يظهر أن لدينا الصورة hello-world متاحة محلياً.

لنقم بتشغيل حاوية أكثر معنى: خادم Apache للويب.

  1. docker run -p 80:80 --name web -d httpd

قد لاحظت أن هناك خيارات إضافية مرفقة إلى الأمر docker run. إليك شرح لهذه المفاتيح:

  • -p — هذا الماد التعلمي يخبر Docker Engine بتعريف منفذ القارورة 80 على منفذ المضيف 80. ولأن Apache يستمع على منفذ 80, فعلينا تعريفه على منفذ المضيف.
  • --name — هذا المفتاح الاختياري يحدد اسم لقارورتنا التي تشتغل. إذا تم تخطي هذا, Docker Engine سيحدد اسم عشوائي.
  • -d — هذه الخيارة توجيه Docker Engine بتشغيل القارورة بالوضع المنعزل. وبدون هذا, القارورة ستبدأ في الأفق، وستحجب الوصول إلى السطح الشروطي. من خلال تحميل القارورة في الخلفية، يمكننا استخدام السطح الشروطي بينما تتجاوز تشغيل القارورة.

لتتأكد بأن قارورتنا بالفعل تتشغل في الخلفية، حاول القول لهذا الأمر:

  1. docker ps

يظهر الناتج أن قارورة تدعى web تتشغل مع منفذ 80 المرتبط بمنفذ المضيف 80.

الآن قم بالوصول إلى المستودع الويب:

  1. curl localhost

دعونا نتوقف ونأزل القارورة التي تشتغل بالأمراض التالية:

  1. docker stop web
  2. docker rm web

تأكيد القارورة أنها موقوفة من مرة أخرى عند تنفيذ ما بواسطة docker ps مجددًا.

خطوة 3 — إضافة التخزين إلى القارورات

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

بدء بإنشاء 目录 جديد على المضيف:

  1. mkdir htdocs

حالياً ، دعونا نبدأ بتشغيل الوحدة مع مفتاح جديد لتمويل الدليل htdocs ، ونوجهه إلى جذور موقع الإنترنت Apache:

  1. docker run -p 80:80 --name web -d -v $PWD/htdocs:/usr/local/apache2/htdocs httpd

المفتاح -v يوجه الدليل htdocs داخل الوحدة إلى نظام الملفات المضاف. أي تغيير يتم إجراءه في هذا الدليل سيكون مرئياً في كلا المواقع.

توجه إلى الدليل من خلال الوحدة بتشغيل الأمر:

  1. docker exec -it web /bin/bash

هذا الأمر يربط قائمة الوحدة بالصفحة التفاعلية بالوحدة. يمكنك أن ترى أنك قد انهيء داخل الوحدة الآن.

تحريك إلى مجلد htdocs وأنشئ ملف HTML بسيط. وأخرج من الصفحة للعودة إلى المضيف:

  1. cd /usr/local/apache2/htdocs
  2. echo '<h1>Hello World from Container</h1>' > index.html
  3. exit

تنفيذ أمر curl localhost مجدداً يظهر أن المزيد من الخوادم تستعمل صفحة التي أنشأناها.

يمكننا أن نحصل على هذه الملف من المضيف والتعديل عليه:

  1. cd htdocs
  2. cat index.html
  3. echo '<h1>Hello World from Host</h1>' | sudo tee index.html >/dev/null

تتم تحقيق التأكيد مجدداً من أمر curl localhost أن المزيد من الخوادم تقدم صفحة الإنترنت الأخيرة التي أنشأناها من المضيف.

يمكنك انهاء الوحدة بالأمر التالي. (ال-f يجبر Docker على الانهاء دون التوقف الأول.)

  1. docker rm -f web

خطوة 4 — بناء الصور

بعيداً عن تشغيل الصور الموجودة في ال注册表، يمكننا إنشاء صور خاصة بنا وتخزينها في ال注册表.

يمكنك إنشاء صور جديدة من containers الموجودة. التغييرات التي يتم إجراها على الcontainer تتم أولاً التأكيد ومن ثم تم تسمية الصور وترحيبها في ال注册表.

دعونا نبدأ مرة أخرى container httpd ونغير الdocument الافتراضي:

  1. docker run -p 80:80 --name web -d httpd
  2. docker exec -it web /bin/bash
  3. cd htdocs
  4. echo '<h1>Welcome to my Web Application</h1>' > index.html
  5. exit

الcontainer يجري الآن بواسطة صفحة index.html مخصصة. يمكنك تحقيق ذلك باستخدام curl localhost.

قبل أن نتأكد من الcontainer المغير، من الجيد أن نتوقف عن تشغيله. بعد التوقف سنقوم بأمر التأكيد:

  1. docker stop web
  2. docker commit web doweb

تأكيد خلق الصورة بأمر docker images. يظهر الصورة doweb التي قمنا بإنشائها مؤخرًا.

لتسمية وتخزين هذه الصورة في Docker Hub، قم بتشغيل الأوامر التالية لتصبح صورتك في ال注册表 العام:

  1. docker login
  2. docker tag your_docker_hub_username/doweb
  3. docker push your_docker_hub_username/doweb

يمكنك تحقيق صورة الجديدة بالبحث في Docker Hub من خلال المتصفح أو الخطأ.

خطوة 5 — إطلاق 注册表 خاص

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

متاجرة Docker متاجرة كما هي كاملة من خالل محادثات شبكة. بالنسبة لكنها متاجرة مع معلومات صور معينة، فإن هي مفاضلة إدخال مستوى خاص لها.

  1. docker run -d -p 5000:5000 --restart=always --name registry -v $PWD/registry:/var/lib/registry registry

لم يتم إنشاء مستوى خاص لها، لذا يمكننا إدخالها كما يلي: إنشاء مستوى خاص لها وإدخالها إلى سيستم المعلومات.

لم يتم إنشاء مستوى خاص لها، لذا يمكننا إدخالها كما يلي: إنشاء مستوى خاص لها وإدخالها إلى سيستم المعلومات.

  1. docker pull busybox
  2. docker tag busybox localhost:5000/busybox
  3. docker images

لم يتم إنشاء مستوى خاص لها، لذا يمكننا إدخالها كما يلي: إنشاء مستوى خاص لها وإدخالها إلى سيستم المعلومات.

  1. docker push localhost:5000/busybox

لم يتم إنشاء مستوى خاص لها، لذا يمكننا إدخالها كما يلي: إنشاء مستوى خاص لها وإدخالها إلى سيستم المعلومات.

  1. docker rmi -f localhost:5000/busybox
  2. docker images
  3. docker pull localhost:5000/busybox
  4. docker images

لم يتم إنشاء مستوى خاص لها، لذا يمكننا إدخالها كما يلي: إنشاء مستوى خاص لها وإدخالها إلى سيستم المعلومات.

لم يتم إنشاء مستوى خاص لها، لذا يمكننا إدخالها كما يلي: إنشاء مستوى خاص لها وإدخالها إلى سيستم المعلومات.

>
لأن المجلد السجلي غير مؤمن، نحتاج إلى تعديل تكوين محرك Docker لتمكين الوصول إلى مجلد سجلي غير مؤمن. لفعل ذلك، احرر ملف daemon.json الموجود في /etc/docker/daemon.json. قم بإنشاء الملف إذا لم يكن موجودًا.

أضف الإدخال التالي:

Editing /etc/docker/daemon.json
{
  "insecure-registries" : ["REMOTE_REGISTRY_HOST:5000"]
}

استبدل REMOTE_REGISTRY_HOST باسم المضيف أو عنوان IP للمجلد السجلي البعيد. أعد تشغيل محرك Docker لضمان تطبيق التغييرات التي تم إجراؤها على التكوين.

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-docker