ما هي Docker Container؟ - حاويات التطبيق الخاص بك باستخدام Docker



Docker Container هو حل بديل خفيف الوزن للجهاز الظاهري لإنشاء ونشر وتشغيل التطبيقات داخل الحاوية.

حسنًا ، آمل أن تكون قد قرأت مدوناتي السابقة على عامل ميناء حيث قمت بتغطية أساسيات Docker. هنا ، في مدونة Docker Container هذه ، سأناقش ما هي حاويات Docker وكيف تعمل. في الغالب ، سنركز على التدريب العملي وحالات استخدام Docker.

لقد قمت بإدراج موضوعات مدونة Docker Container التالية:





  • لماذا نحتاج حاويات الرصيف؟
  • كيف تعمل حاويات Docker؟
  • - حالات استخدام حاوية الرصيف

لماذا نحتاج حاويات الرصيف؟

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

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



ضع في اعتبارك المثال أدناه:

تطبيق التسوق عبر الإنترنت - Docker Container - Edureka

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



حسنًا ، تتمتع هذه البنية بالعديد من الفوائد:

  • حتى إذا فشلت إحدى خدماتك المصغرة ، فلن يتأثر تطبيقك بالكامل إلى حد كبير.
  • من الأسهل إدارتها

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

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

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

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

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

تعرف على كيف تكون حاويات Docker أفضل من الأجهزة الافتراضية

لذا ، تخيل لو كنت أعطي 8 جيجا بايت من ذاكرة الوصول العشوائي لجميع أجهزة VM الخاصة بي ، ولدي 5 خدمات مصغرة تعمل على أجهزة افتراضية مختلفة. في هذه الحالة ، ستتطلب أجهزة VM هذه 40 جيجابايت من ذاكرة الوصول العشوائي. حسنًا ، الآن أطلب أن تكون تكوينات الجهاز المضيف عالية جدًا ، يجب أن يكون هناك ما يقرب من 44 جيجابايت من ذاكرة الوصول العشوائي في الجهاز المضيف. من الواضح أن هذا ليس حلاً مستدامًا لمثل هذه البنية لأنني أهدر الكثير من الموارد هنا.

حسنًا ، لدي الكثير من الموارد لإهدارها ، ولكن لا يزال لدي مشكلة عدم تناسق في دورة حياة تسليم البرامج (SDLC). لا بد لي من تكوين أجهزة VM هذه في الاختبار وكذلك في بيئة prod. في مكان ما في هذه العملية ، لم يتم تحديث بعض البرامج في خادم الاختبار ، ويستخدم فريق التطوير الإصدار المحدث من البرنامج. هذا يؤدي إلى الصراعات.

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

الآن ، دعونا نفهم ما هو Docker Container وكيف يعمل ، وكيف حل مشكلتي.

ما هي حاوية Docker؟

Docker هي أداة مصممة لتسهيل إنشاء التطبيقات ونشرها وتشغيلها باستخدام الحاويات.

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

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

دعنا نفهم الآن ، كيف تعمل Docker Container.

كيف تعمل حاوية Docker؟

الرسم البياني أدناه هو في الأساس طريقة لاستخدام Docker. وأفترض أن لديك فكرة عن Docker Image و Dockerfile.

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

  • سيقوم المطور أولاً بكتابة كود المشروع في ملف Docker ثم بناء صورة من هذا الملف.
  • ستحتوي هذه الصورة على كود المشروع بالكامل.
  • الآن ، يمكنك تشغيل صورة Docker هذه لإنشاء أكبر عدد تريده من الحاويات.
  • يمكن تحميل صورة Docker هذه على Docker hub (إنه في الأساس مستودع سحابي لصور Docker الخاصة بك ، يمكنك الاحتفاظ بها عامة أو خاصة).
  • يمكن سحب صورة Docker هذه على Docker hub بواسطة فرق أخرى مثل QA أو Prod.

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

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

فيما يلي شرح الرسم التخطيطي:

  • أولاً ، قمنا بكتابة المتطلبات المعقدة داخل ملف Dockerfile.
  • ثم دفعناها على جيثب.
  • بعد ذلك استخدمنا خادم CI (Jenkins).
  • سيقوم خادم Jenkins هذا بسحبه من Git ، وبناء البيئة الدقيقة. سيتم استخدام هذا في خوادم الإنتاج وكذلك في خوادم الاختبار.
  • لقد قمنا بتوزيعها على مراحل (وهي تشير إلى نشر برامجك على الخوادم لأغراض الاختبار ، قبل نشرها بالكامل في الإنتاج.) بيئات للمختبرين.
  • في الأساس ، قمنا بتدوير ما كان لدينا بالضبط في التطوير والاختبار والتدريج في الإنتاج.

سيكون من العدل حقًا أن نقول إن Docker جعل حياتي سهلة.

حسنًا ، كانت تلك قصة شركتي ، فلنلقِ نظرة على دراسة حالة جامعة إنديانا. كيف حل Docker مشاكلهم.

دراسة حالة جامعة إنديانا:

إن جامعة إنديانا هي نظام جامعي عام متعدد الحرم في ولاية إنديانا بالولايات المتحدة.

عرض المشكلة

كانوا يستخدمون برامج نصية مخصصة لنشر التطبيقات في الجهاز الظاهري.

تم تحسين بيئتهم للتطبيقات القديمة القائمة على Java. تتضمن بيئتهم المتنامية منتجات جديدة لا تعتمد فقط على جافا. من أجل منح طلابها أفضل تجربة ممكنة ، كانت الجامعة بحاجة إلى البدء في تحديث التطبيقات.

أرادت الجامعة تحسين طريقة تصميم التطبيقات ، من خلال الانتقال إلى بنية قائمة على الخدمات المصغرة لتطبيقاتها.

كان الأمان مطلوبًا لبيانات الطالب مثل SSNs وبيانات صحة الطالب.

المحلول:

تمت معالجة جميع المشكلات بواسطة Docker Data Center (DDC) ، ضع في اعتبارك الرسم التخطيطي أدناه:

Docker Trusted Registry - يقوم بتخزين صور Docker.

UCP (طائرة التحكم العامة) Web UI - يساعد في إدارة الكتلة بأكملها من مكان واحد. يتم نشر الخدمات باستخدام UCP web UI ، باستخدام صور Docker المخزنة في DTR (Docker Trusted Registry).

تستفيد فرق IT ops من Universal Control Plane لتوفير برنامج Docker المثبت على المضيفين ، ثم نشر تطبيقاتهم دون الحاجة إلى القيام بمجموعة من الخطوات اليدوية لإعداد كل بنيتهم ​​التحتية.

يتكامل UCP و DTR مع خادم LDAP لتوفير الوصول السريع إلى تطبيقاتهما.

دروس أندرويد ستوديو للمبتدئين

أتمنى أن تقرأوا المدونات السابقة لتتعلموا أساسيات Docker.

الآن ، سأشرح لك كيف يمكننا استخدام Docker Compose للتطبيق متعدد الحاويات.

Docker التدريب العملي على:

أفترض أنك قمت بتثبيت Docker.سأستخدم Docker Compose في هذا المنشور ، أدناه قدمت مقدمة صغيرة لـ Docker Compose.

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

لنفترض أن لديك تطبيقات متعددة في حاويات مختلفة وكل هذه الحاويات مرتبطة ببعضها البعض. لذلك ، لا تريد تنفيذ كل واحدة من هذه الحاويات واحدة تلو الأخرى. لكنك تريد تشغيل هذه الحاويات بأمر واحد. وهنا يأتي دور Docker Compose في الصورة. باستخدامه يمكنك تشغيل تطبيقات متعددة في حاويات مختلفة بأمر واحد. أي عامل الميناء يؤلف.

مثال: تخيل أن لديك حاويات مختلفة ، أحدها يقوم بتشغيل تطبيق ويب ، وآخر يقوم بتشغيل postgres وآخر redis قيد التشغيل ، في ملف YAML. وهذا ما يسمى ملف إنشاء عامل ميناء ، ومن هناك يمكنك تشغيل هذه الحاويات بأمر واحد.

لنأخذ مثالاً آخر:

لنفترض أنك تريد نشر مدونة ، لذلك ستستخدم CMS (نظام إدارة المحتوى) ، ووردبريس هو نظام إدارة المحتوى الأكثر استخدامًا. بشكل أساسي ، أنت بحاجة إلى حاوية واحدة لـ WordPress وتحتاج إلى حاوية أخرى مثل MySQL للنهاية الخلفية ، يجب ربط حاوية MySQL بحاوية WordPress. نحتاج أيضًا إلى حاوية أخرى لـ Php Myadmin والتي سيتم ربطها بقاعدة بيانات MySQL ، وهي تستخدم أساسًا للوصول إلى قاعدة بيانات MySQL.

ماذا عن تنفيذ المثال المذكور أعلاه عمليا.

الخطوات المتبعة:

  1. قم بتثبيت Docker Compose :
  2. قم بتثبيت WordPress: سنستخدم المسؤول ووردبريس و MariaDB صور عامل ميناء.
  3. تثبيت MariaDB: إنه أحد أكثر خوادم قواعد البيانات شيوعًا في العالم. لقد صنعه مطورو MySQL الأصليون. تم تطوير MariaDB كبرنامج مفتوح المصدر وكقاعدة بيانات علائقية توفر واجهة SQL للوصول إلى البيانات.
  4. قم بتثبيت PhpMyAdmin: إنها أداة برمجية مجانية مكتوبة بلغة PHP ، تهدف إلى التعامل مع إدارة MySQL عبر الويب.
  5. أنشئ موقع WordPress:

هيا بنا نبدأ!

تثبيت Docker Compose:

قم بتثبيت Python Pip أولاً:

sudo apt-get install python-pip

الآن ، يمكنك تثبيت Docker Compose:

sudo pip تثبيت عامل الإرساء

تثبيت WordPress:

إنشاء دليل ووردبريس:

مكدير ورد

أدخل دليل wordpress هذا:

قرص مضغوط وورد /

في هذا الدليل ، أنشئ ملف Docker Compose YAML ، ثم عدّله باستخدام gedit:

sudo gedit docker-compose.yml

الصق سطور التعليمات البرمجية أدناه في ملف yaml هذا:

wordpress: image: wordpress links: - wordpress_db: mysqlorts: - 8080: 80 wordpress_db: image: mariadb environment: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: mysql ports: - 8181: 80 MYSQL_USERNAME: الجذر MYSQL_ROOT_PASSWORD: edureka

أعلم أنك تريدني أن أشرح هذا الرمز ، فما سأفعله ، سآخذ أقسامًا صغيرة من هذا الرمز وأشرح لك ما يحدث.

wordpress_db: ... البيئة: MYSQL_ROOT_PASSWORD: edureka ...

سيؤدي هذا إلى تعيين متغير بيئة داخل حاوية wordpress_db تسمى MYSQL_ROOT_PASSWORD باستخدام كلمة المرور التي تريدها. تم تكوين صورة MariaDB Docker للتحقق من متغير البيئة هذا عند بدء التشغيل وستتولى إعداد قاعدة البيانات باستخدام حساب جذر بكلمة المرور المحددة باسم MYSQL_ROOT_PASSWORD.

ووردبريس: ... المنافذ: - 8080: 80 ...

رقم المنفذ الأول هو رقم المنفذ على المضيف ، ورقم المنفذ الثاني هو المنفذ داخل الحاوية. لذلك ، يعيد هذا التكوين توجيه الطلبات على المنفذ 8080 للمضيف إلى منفذ خادم الويب الافتراضي 80 داخل الحاوية.

phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: mysqlorts: - 8181: 80 البيئة: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

هذا الاستيلاء على docker-phpmyadmin بواسطة عضو المجتمع corbinu ، يربطه بحاوية wordpress_db الخاصة بنا بالاسم mysql (بمعنى من داخل حاوية phpmyadmin سيتم إعادة توجيه مراجع حاوية اسم المضيف mysql إلى حاوية wordpress_db الخاصة بنا) ، يعرض منفذها 80 على المنفذ 8181 من النظام المضيف ، وأخيرًا يقوم بتعيين اثنين من متغيرات البيئة باستخدام اسم المستخدم وكلمة المرور MariaDB. لا تلتقط هذه الصورة تلقائيًا متغير بيئة MYSQL_ROOT_PASSWORD من بيئة wordpress_dbcontainer ، بالطريقة التي تعمل بها صورة wordpress. في الواقع ، يتعين علينا نسخ MYSQL_ROOT_PASSWORD: سطر edureka من حاوية wordpress_db ، وتعيين اسم المستخدم على الجذر.

ابدأ الآن مجموعة التطبيق:

عامل الميناء يؤلف د

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

الآن ، في المتصفح ، انتقل إلى المنفذ 8080 ، باستخدام عنوان IP العام أو اسم المضيف ، كما هو موضح أدناه:

المضيف المحلي: 8080

املأ هذا النموذج وانقر فوق تثبيت WordPress.

بمجرد الانتهاء ، قم بزيارة عنوان IP الخاص بخادمك مرة أخرى (هذه المرة باستخدام المنفذ 8181 ، على سبيل المثال localhost: 8181). سيتم الترحيب بك من خلال شاشة تسجيل الدخول في phpMyAdmin:

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

هنا ، أنهيت مدونة Docker Container الخاصة بي. أتمنى أن تكون قد استمتعت بهذا المنشور. يمكنك التحقق مدونات أخرى في السلسلة أيضًا ، والتي تتناول أساسيات Docker.

إذا وجدت مدونة Docker Container هذه ذات صلة ، فراجع ملف من Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرين في جميع أنحاء العالم. تساعد الدورة التدريبية لشهادة Edureka DevOps المتعلمين على اكتساب الخبرة في عمليات وأدوات DevOps المختلفة مثل Puppet و Jenkins و Docker و Nagios و Ansible و Chef و Saltstack و GIT لأتمتة خطوات متعددة في SDLC.

حصلت على السؤال بالنسبة لي؟ يرجى ذكر ذلك في قسم التعليقات وسأعاود الاتصال بك.