ينمو عالم تطوير البرمجيات ويتوسع بسرعة كبيرة بحيث تصبح المنصات والأدوات الجديدة شائعة كل يوم. Docker هو واحد منهم ، وهو يمهد الطريق لجيل جديد من المطورين. في هذه المقالة ، سوف نستكشف ماهية Docker و Docker Container بالإضافة إلى مزاياها وكيفية استخدامها وتفاصيل أخرى. لذلك ، دون مزيد من التأخير ، دعنا نتعمق في نظرة عامة على Docker Container.
إذا كان الأمر يبدو معقدًا للغاية بالنسبة لك ومستوى معرفتك ، فاقرأ حتى النهاية لأننا في الجزء السفلي من المقالة نقدم أيضًا بديلًا أبسط no-code يمكن أن يكون أكثر ملاءمة للمبتدئين والمطورين المواطنين وأي شخص من يحتاج إلى تطوير تطبيق ما بسهولة وسرعة.
ما هي Docker Container ؟
قبل مناقشة ماهية Docker Container ، نحتاج إلى الرجوع خطوة إلى الوراء والتحدث عن ماهية Docker. Docker هي منصة مفتوحة المصدر للمطورين. باستخدام Docker ، يمكن حزم التطبيق ، بكل تبعياته ، في شكل حاويات. باستخدام هذا النظام ، يمكن لكل تطبيق العمل في بيئة معزولة: كل حاوية مستقلة وتحتوي على التطبيق مع تبعياته ومكتباته. بهذه الطريقة ، لن تتداخل التطبيقات مع بعضها البعض ، ويمكن للمطور العمل على كل منها بشكل مستقل. تعتبر Docker Container أيضًا مهمة ومفيدة عندما يتعلق الأمر بالعمل الجماعي.
يمكن للمطور ، على سبيل المثال ، تطوير حاوية ونقلها إلى الفريق. سيكون الفريق قادرًا على تشغيل الحاوية لتكرار البيئة بأكملها التي طورها المبرمج الأول.
العمارة Docker
ينشر Docker بنية خادم العميل التي تعمل مع "وحدات البناء" التالية:
- Docker Daemon: يستمع إلى طلبات Docker Client ويدير الكائنات مثل الحاويات والصور والأحجام والشبكات.
- عميل Docker: كيف يتفاعل المستخدم مع منصة Docker.
- Docker hub: إنه سجل (صور تخزن السجلات ، انظر أدناه) وهو عام ، مما يعني أن أي مستخدم Docker يمكنه الوصول إليه والبحث عن الصور فيه. سيبحث Docker افتراضيًا عن الصور في Docker Hub ، ولكن يمكنك أيضًا إعداد واستخدام سجل خاص.
- صور Docker: هي قوالب لإنشاء الحاويات. يمكن أن تستند صور الحاوية إلى صور حاوية أخرى مع بعض التخصيص. بخلاف استخدام الصور التي أنشأها المستخدمون الآخرون والمتاحة في السجلات العامة ، يمكنك إنشاء صورك وتخزينها في السجل الخاص بك أو مشاركتها في سجل عام.
- حاويات Docker: هي مثيلات قابلة للتشغيل لصور الحاوية. كل حاوية قيد التشغيل معزولة جيدًا عن غيرها ، ولكن يمكنك أيضًا تجميعها لإنشاء تطبيقك. يمكن النظر إلى الحاويات على أنها برامج تشغيل معزولة أو وحدات بناء لنفس التطبيق.
الآن بعد أن عرفت ما هو كل شيء وما يفعله ، يمكنك فهم بنية Docker بشكل أفضل: لدينا عميل Docker الذي "يتحدث" إلى Docker Daemon ، وهو الذي يتعامل مع بناء Docker Container s وتشغيلها. يتصل عميل Docker ، على وجه الخصوص ، بـ Docker Daemon باستخدام واجهة برمجة تطبيقات REST عبر واجهة الشبكة أو مقابس UNIX. يمكن لعميل Docker واحد التواصل مع أكثر من Docker Daemon.
لماذا نحتاج إلى حاوية Docker ؟
المبدأ الذي هو أساس حاويات Docker ونشرها هو النقل بالحاويات. من أجل فهم أهميتها ومزاياها ، قد يكون من المفيد وصف سيناريو متطور بدون حاويات.
قبل الحاوية
لطالما أراد المطورون العمل على تطبيقات في بيئات معزولة حتى لا يتداخلوا مع بعضهم البعض. قبل الحاوية ، كانت الطريقة الوحيدة لعزل التطبيقات وتبعياتها هي وضع كل منها على جهاز افتراضي منفصل.
بهذه الطريقة ، تعمل التطبيقات على نفس الجهاز ؛ الفصل افتراضي. ومع ذلك ، فإن للمحاكاة الافتراضية حدودًا كثيرة (خاصة أننا على وشك اكتشافها عندما نقارنها بالحاويات). بادئ ذي بدء ، الأجهزة الافتراضية ضخمة الحجم. ثانيًا ، يؤدي تشغيل عدة أجهزة افتراضية إلى عدم استقرار أداء كل منها.
هناك أيضًا مشكلات أخرى تتعلق باستخدام الأجهزة الافتراضية عندما يتعلق الأمر بالتحديثات وإمكانية النقل والتكامل ، وقد تستغرق عملية التمهيد أحيانًا وقتًا طويلاً للغاية. دفعت هذه المشكلات مجتمع المطورين إلى إيجاد حل جديد. والحل الجديد هو النقل بالحاويات.
حاويات
تعتبر الحاوية أيضًا نوعًا من المحاكاة الافتراضية ، ولكنها تنقل المحاكاة الافتراضية إلى مستوى نظام التشغيل. هذا يعني أنه بينما تقوم المحاكاة الافتراضية ، باستخدام الأجهزة الافتراضية ، بإنشاء أجهزة افتراضية ، فإن الحاوية تنشئ نظام تشغيل افتراضيًا.
على عكس الأجهزة الافتراضية ، تعتبر الحاويات أكثر كفاءة للأسباب التالية:
- يستخدمون نظام تشغيل مضيفًا ، وبالتالي لا يوجد نظام تشغيل ضيف ؛
- يتشاركون المكتبات والموارد ذات الصلة عند الحاجة ، مما يجعل التنفيذ سريعًا جدًا.
- نظرًا لأن جميع الحاويات تشترك في نفس نظام التشغيل المضيف ، فإن عملية التمهيد سريعة للغاية أيضًا (قد تتطلب بضع ثوانٍ!).
بعبارة أخرى ، مع النقل بالحاويات ، لدينا بنية بيئة متطورة تبدو كالتالي:
- نظام تشغيل مضيف مشترك في القاعدة
- محرك حاوية
- الحاويات التي تحتوي فقط على مكتبات وتبعيات محددة لتطبيقها والتي يتم عزلها تمامًا عن بعضها البعض.
أثناء استخدام الأجهزة الافتراضية ، سيكون الهيكل كما يلي:
- نواة نظام تشغيل مضيف ؛
- نظام تشغيل ضيف (منفصل) لكل تطبيق ؛
- التطبيقات المختلفة مع مكتباتهم وتبعياتهم.
كما ذكرنا ، يتمثل الاختلاف الرئيسي بين النظامين في عدم وجود نظام تشغيل ضيف في نموذج "Containerization" ، مما يحدث فرقًا كبيرًا.
فوائد Docker
Docker Container هي عبارة عن منصة تتيح لك استغلال النقل بالحاويات كما وصفناها. إذا كان علينا أن نجمع كل المزايا التي يتمتع بها للمطورين ، فسيكونون على النحو التالي.
بيئة معزولة وحاويات متعددة
لا يسمح لك Docker فقط بإنشاء وإنشاء حاويات معزولة عن بعضها البعض وقادرة على العمل دون إزعاج بعضها البعض ، ولكنها تتيح لك أيضًا إعداد حاويات متعددة في نفس الوقت وعلى نفس المضيف. يُسمح لكل حاوية من الحاويات المتعددة بالوصول إلى الموارد المخصصة فقط. علاوة على ذلك ، فإن عملية حذف التطبيق الذي لم تعد بحاجة إليه أصبحت أسهل أيضًا: ما عليك سوى إزالة الحاوية الخاصة به.
سرعة النشر
نظرًا لكونه منظمًا كما هو (انظر الفقرة السابقة) ، فإن Docker يجعل عملية نشر التطبيق أسرع كثيرًا (مقارنة بالبديل الذي يستخدم أجهزة افتراضية). السبب وراء أداء حاويات Docker بشكل جيد هو أن Docker ينشئ حاوية مختلفة لكل عملية بحيث لا يتم تشغيل حاويات Docker في نظام التشغيل.
المرونة وقابلية التوسع
تجعل Docker Container عملية إجراء التغييرات على تطبيقاتك أسهل كثيرًا. هذا لأنه عندما تحتاج إلى التدخل في تطبيق ما ، يمكنك ببساطة الوصول إلى حاويته ، ولن يؤثر ذلك على جميع التطبيقات الأخرى بأي شكل من الأشكال. تعمل أداة أمر Docker Compose (انظر الفقرة التالية) على تحسين المرونة وقابلية التوسع بطرق مستحيلة مع أي نهج آخر لتطوير التطبيقات.
قابلية التنقل
التطبيقات التي تم إنشاؤها داخل حاويات البرامج محمولة بشكل جيد للغاية. يمكن تشغيل حاويات Docker على أي نظام أساسي طالما أن نظام التشغيل المضيف يدعم Docker. عندما تقوم بإنشاء التطبيق الخاص بك داخل الحاوية ، يمكنك نقله إلى أي نظام أساسي يدعم Docker ، وسوف يعمل بالمثل على كل منهم.
حماية
عززت Docker Containers الأمان للأسباب التالية:
- تطبيق واحد (ومشاكله المحتملة) لا يؤثر على أي تطبيق آخر.
- المطور لديه سيطرة كاملة على مسار المرور.
- يتم تعيين مجموعة منفصلة من الموارد لكل حاوية قيد التشغيل.
- لا يمكن لتطبيق ما الوصول إلى بيانات تطبيق آخر بدون إذن.
ما هو Docker Compose؟
Docker Compose هو أمر Docker ينقل "قوة" Docker و Containerization إلى مستوى آخر. باستخدام هذه الأداة ، يمكن أن تصبح عملية تطوير التطبيق أسرع وأسهل. أداة Docker Compose هي أداة سطر أوامر وما تفعله هو أخذ عدة حاويات وتجميعها في تطبيق. يمكن بعد ذلك تشغيل التطبيق على مضيف واحد.
باستخدام Docker Compose ، يمكنك تقسيم مشروع تطوير التطبيقات المعقد إلى مشاريع أصغر. يمكنك العمل على الجوانب المختلفة بشكل منفصل ، ويمكنك أخيرًا تجميعها لإنشاء تطبيق الويب النهائي الخاص بك أو تطبيق آخر.
يعني استخدام Docker Compose أيضًا أنك ستتمكن من استخدام الحاوية التي أنشأتها لهذا المشروع في مشاريع مختلفة أخرى. هذا يعني أيضًا أنه عندما تحتاج إلى تحديث جانب واحد ، يمكنك العمل عليه دون التأثير على مشروع تطوير التطبيق بأكمله.
خطوات استخدام Docker Container
من خلال قراءة هذه المقالة ، تكون قد انتقلت بالفعل خطواتك الأولى إلى عالم تطوير التطبيقات باستخدام Docker. لا يمكنك استخدام هذه الأداة القوية والمعقدة إذا لم تكن لديك معرفة بجميع جوانبها. الآن ، بمجرد تثبيت Docker على جهاز الكمبيوتر الخاص بك (وهو متوفر لنظام التشغيل Mac و Windows و Linux) ، فإن خطواتك التالية هي التالية.
- كيفية بناء وتشغيل الحاويات
- كيفية نشر التطبيقات
- كيفية تشغيل تطبيق باستخدام Docker Compose
تتمثل إحدى المزايا العديدة لاستخدام Docker في توفر وثائق تفصيلية عبر الإنترنت ، وقد تم تنقيحها ونشرها بواسطة فريق Docker أنفسهم (لذا فهي موثوقة للغاية). يمكنك الارتباط بشكل كامل بوثائقهم في بداية وأثناء رحلة تطوير التطبيق. ومع ذلك ، نود هنا أن نوصي بالبدء بهاتين الخطوتين:
ابدأ البرنامج التعليمي
يحتوي Docker على برنامج تعليمي مدمج للمستخدمين الجدد. لتشغيله ، افتح موجه الأوامر واكتب هذا الأمر (يمكنك نسخه ولصقه):
Docker run -d -p 80:80 docker / بدء التشغيل
هناك بعض الأشياء التي يمكن تعلمها من خلال إلقاء نظرة على هذا الأمر فقط:
- "-" تشغيل الحاوية في الخلفية ؛
- -p 80:80 خرائط المنفذ 80 على المضيف إلى المنفذ 80 على الحاوية ؛
- يحدد docker/getting-started سيتم استخدامها.
افهم لوحة القيادة
فقط بعد الانتهاء من البرنامج التعليمي وقبل البحث في الوثائق المقدمة من فريق Docker ، من المهم أن تفهم Docker Dashboard. إنها لوحة توفر وصولاً سريعًا إلى سجلات الحاويات ودورات حياتها. على سبيل المثال ، من السهل للغاية نقل أو حذف الحاويات من لوحة القيادة.
Docker Container: هل تتطلب معرفة بتطوير التطبيقات؟
يتطلب استخدام Docker وحاوياته وأداة Docker Compose بعض المعرفة بلغات البرمجة وأطر العمل والهندسة المعمارية . يمكن لـ Docker تسهيل العملية ، ولكن فقط لمن هم على دراية ببرمجة ونشر التطبيقات. بالنسبة للمبتدئين أو مواطني التطوير أو أي شخص يبحث عن أبسط طريقة ممكنة لنشر التطبيقات ، هناك بديل صالح: تطوير البرامج بدون كود و AppMaster.
يعد AppMaster ، في الواقع ، نظامًا أساسيًا رائدًا عالميًا no-code يسمح لك بإنشاء تطبيق ويب وتطبيق جوال وخلفية دون كتابة الرمز يدويًا. AppMaster اللبنات الأساسية لمشروعك ، بالإضافة إلى واجهة مرئية حيث يمكنك تجميعها باستخدام نظام drag-and-drop . أثناء قيامك بإنشاء برنامجك بهذه الطريقة ، AppMaster تلقائيًا بإنشاء شفرة المصدر نيابة عنك. يمكن الوصول إلى الكود المصدري في أي لحظة ، كما أنه قابل للتصدير.
يمكن أن تشبه اللبنات البرمجية الإنشائية الخاصة AppMaster صور Docker بطريقة ما ، ولكنها توفر لك ميزة ثمينة تتمثل في إمكانية تجميعها دون كتابة التعليمات البرمجية المصدر على الإطلاق. يمكن أن يكون AppMaster نظامًا أساسيًا أكثر ملاءمة لك إذا كنت مبتدئًا.
حقيقة مثيرة للاهتمام يستخدم AppMaster أيضًا حاوية عامل إرساء. بشكل افتراضي ، تتم استضافة جميع تطبيقات العميل تلقائيًا بواسطة AppMaster في Docker Container s المعزولة. عادةً ، عندما ينقر العميل على زر النشر ، في أقل من 30 ثانية ، AppMaster بإنشاء كود المصدر ، وتجميعه ، واختباره ، وحزمه في Docker Container. ترسل المنصة Docker Container إلى عامل AppMaster المحلي ، وهو محور موجود في النظام الأساسي. AppMaster ، الذي يستخدمه Harbor ، هو حل مفتوح المصدر. وبعد ذلك ، يرسل AppMaster أمرًا إلى الخادم الهدف بحيث يلتقط هذه الحاوية ويطلقها.
استنتاج
يعد Docker أداة مهمة في أيدي المطورين. كما رأينا ، فإنه يحل العديد من القيود التي كانت تفرضها طريقة الآلة الافتراضية القديمة. ومع ذلك ، لا تزال طريقة مناسبة للمطورين الخبراء: بعد كل شيء ، بينما يمكنك استخدام القوالب والصور ، ما زلت بحاجة إلى كتابة التعليمات البرمجية للقيام بالكثير من الأشياء داخل منصة Docker. إذا كنت تبحث عن بديل أسهل ، إذا كنت ترغب في تجنب كتابة التعليمات البرمجية على الإطلاق ، AppMaster no-code هما الحلان الأمثل لك.