دوكر (برمجية)

دوكر (بالإنجليزية: Docker)‏ هي تقنية جديدة ونوعية شبيهة بالنظم الافتراضية (بالإنجليزية: Virtual System)‏ ولكنها تقوم بعملية إنشاء نسخ افتراضية للنظام[11]، وذلك من خلال إنتاج حاويات تتشارك فيها النواة مع النظام المضيف، حيث أن هذه الحاويات تلعب دور غلاف حاوي لتطبيق ما، بحيث يصبح قائما بذاته (مستقل)؛ أي أن هذا التطبيق أو المشروع بكامل احتياجاته ليعمل يكون داخل حاوية (قد تكون حاوية واحدة أو عدة حاويات تتخاطب في ما بينها)، وبالتالي فإن ذلك يقلل من استهلاك موارد الجهاز. الجدير بالذكر أيضا أن القائمين على مشروع دوكر قاموا بتوفير ما يسمى بدوكر هب (Docker Hub) لمشاركة صور المشروع (إذا كان مفتوح المصدر)، كما يوجد به الكثير من الحلول المفتوحة المصدر والقابلة للاستخدام.

النشأة[عدل]

تأسست شركة دوكر من قبل سولومون هيكيس وسيباستيان بال خلال مجموعة حاضنة Y Combinator Summer 2010 التي تم إطلاقها في عام 2011.[12] بدأ هيكيس مشروع دوكر في فرنسا كمشروع داخلي داخل دوت كلاود (dotCloud)، وهي شركة منصة كخدمة.[13]

بدأ المشروع عام 2008 كمشروع صغير مفتوح المصدر باسم إل إكس سي (LXC)، لكن البداية الحقيقية لهذا التكنولوجيا كانت عام 2013 على يد شركة دوكر التي نشرت هذة التكنولوجيا بشكل رسمي وأصبح دوكر من أهم مكونات المنصات السحابية PaaS اللازمة لتطوير التطبيقات وأكثرها انتشارا.

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

في عام 2017، أنشأت دوكر مشروع موبي للبحث والتطوير المفتوح.[14]

الفرق بين دوكر والآلات الافتراضية[عدل]

يعد دوكر أخف بكثير من الآلات الافتراضية، حيث يمكن تشغيل العشرات من الحاويات في حاسوب عادي واحد، في حين لا يمكن تشغيل 3-4 آلات افتراضية في حاسوب عادي واحد ولو كان قويا نسبيا. أي أن دوكر يستهلك موارد أقل بكثير. ثم إن الآلات الافتراضية تقوم بمحاكاة كامل النظام وكل ما فيه ووضعه فوق النظام المضيف، في حين يقوم دوكر بتشارك النواة (Linux kernel) مع النظام المضيف. ما يقوم به دوكر هو تنزيل التوزيعات فقط، أي الـ bins/libs لكل توزيعة فقط، في حين يتشارك النواة مع النظام المضيف ولا يُنزّل نواة جديدة مع تلك التوزيعة. تلك الـ bins/libs كفيلة لمحاكاة بيئة التوزيعة المرجوة، أما النواة فهي متشابهة بين جميع التوزيعات وبالتالي يتقاسمها مع النظام المضيف وهو يعمل على كافة أنواع أنظمة التشغيل،[15] هذا بالإضافة إلى أن دوكر يعزل التطبيق واعتمادياته فقط، في حين الآلات الافتراضية تعزل كامل النظام وما فيه من تطبيقات.[16]

المكونات[عدل]

يتكون برنامج دوكر كخدمة من ثلاثة مكونات:

  • البرمجيات: عفريت دوكر، ويسمى بدوكرد (dockerd)، هي عملية مستمرة تدير حاويات دوكر وتعالج كائنات الحاوية. يستمع العفريت للطلبات المرسلة عبر واجهة برمجة تطبيقات محرك دوكر.[17][18] يوفر برنامج دوكر العميل، المسمى بدوكر، واجهة سطر الأوامر التي تسمح للمستخدمين بالتفاعل مع عفريت دوكر.[17][19]
  • الكائنات: كائنات دوكر هي كيانات مختلفة تستخدم لتجميع تطبيق في دوكر. الفئات الرئيسية من كائنات دوكر هي الصور والحاويات والخدمات.[17]
    • حاوية دوكر هي بيئة مغلفة قياسية تقوم بتشغيل التطبيقات. تتم إدارة الحاوية باستخدام واجهة برمجة تطبيقات دوكر أو CLI.[17]
    • صورة دوكر هي قالب للقراءة فقط يستخدم لبناء الحاويات. يتم استخدام الصور لتخزين التطبيقات وشحنها.[17]
    • تسمح خدمة دوكر بتحجيم الحاويات عبر العديد من عفاريت دوكر. والنتيجة هي ما يعرف بسرب، مجموعة من العفاريت المتعاونين الذين يقومون بالتواصل من خلال واجهة برمجة تطبيقات دوكر.[17]
  • السجلات: سجل دوكر هو مستودع لصور دوكر. يتصل عملاء دوكر بالسجلات لتنزيل (سحب) الصور لاستخدامها أو تحميل (دفع) الصور التي قاموا ببنائها. يمكن أن تكون السجلات عامة أو خاصة. السجلان العامان الرئيسيان هما دوكر هب و دوكر كلاود. دوكر هب هو التسجيل الافتراضي حيث يبحث دوكر عن الصور.[17] تسمح سجلات دوكر أيضًا بإنشاء إشعارات تستند إلى الأحداث.[20]

الأدوات[عدل]

  • دوكر كومبوس (Docker Compose) هي أداة لتعريف وتشغيل تطبيقات دوكر متعددة الحاويات.[21] ويستخدم ملفات YAML لتكوين خدمات التطبيق وللقيام بعملية الإنشاء وبدء التشغيل لكافة الحاويات ذات الأمر الواحد. تسمح الأداة المساعدة CLI الخاصة بدوكر كومبوس للمستخدمين بتشغيل الأوامر على حاويات متعددة في وقت واحد، على سبيل المثال، بناء الصور وتحجيم الحاويات وتشغيل الحاويات التي تم إيقافها والمزيد.[22] الأوامر المتعلقة بمعالجة الصور، أو الخيارات التفاعلية للمستخدم، ليست ذات صلة بدوكر كومبوس لأنها تتناول حاوية واحدة.[23] يتم استخدام ملف docker-compose.yml لتعريف خدمات التطبيق ويتضمن خيارات تكوين مختلفة. على سبيل المثال، يحدد خيار الإنشاء خيارات التكوين مثل مسار ملف دوكر (Dockerfile)، يسمح خيار الأمر بتجاوز أوامر دوكر الافتراضية، والمزيد.[24] تم إصدار أول إصدار تجريبي من دوكر كومبوس (الإصدار 0.0.1) في 21 ديسمبر عام 2013.[25] تم توفير أول إصدار جاهز للإنتاج (1.0) في 16 أكتوبر 2014.[25]
  • دوكر سوارم (Docker Swarm) الذي يوفر وظائف التجميع الأصلية لحاويات دوكرويحول مجموعة من محركات دوكر إلى محرك دوكر افتراضي واحد. في دوكر 1.12 وأعلى، وضع سوارم يدمج مع محرك دوكر. يسمح CLI دوكر سوارم للمستخدمين بالقيام بتشغيل حاويات سوارم وإنشاء رموز توكن وتعداد العقد في الكتلة وأكثر.[26] تسمح عقدة دوكر للمستخدمين بتشغيل أوامر مختلفة لإدارة العقد في سوارم، على سبيل المثال، سرد العقد في سوارم وتحديث العقد وإزالة العقد من سوارم.[27] يدار دوكر سوارم باستخدام خوارزمية توافق الآراء رافت. وفقا لرافت، ليتم تنفيذ التحديث، فإن غالبية عقد سوارم تحتاج إلى الاتفاق على التحديث.[28][29]

المراجع[عدل]

  1. ^ وصلة مرجع: https://docs.docker.com/engine/installation/linux/. الوصول: 19 أغسطس 2016.
  2. ^ وصلة مرجع: https://docs.docker.com/docker-for-windows/. الوصول: 19 أغسطس 2016.
  3. ^ وصلة مرجع: https://docs.docker.com/docker-for-mac/. الوصول: 19 أغسطس 2016.
  4. ^ اسم المُؤَلِّف بالحروف: Tim Tsai. وصلة مرجع: https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/. تاريخ النشر: 7 يونيو 2019.
  5. ^ أ ب وصلة مرجع: https://api.github.com/repos/docker/docker. الوصول: 6 مارس 2017.
  6. ^ وصلة مرجع: http://thenewstack.io/go-programming-language-helps-docker-container-ecosystem/. الوصول: 19 أغسطس 2016.
  7. ^ "Docker bekommt 15 Millionen Risikokapital" (بالألمانية). heise online. 23 Jan 2014. Retrieved 2017-01-13. {{استشهاد ويب}}: الوسيط |مسار أرشيف= غير صحيح: تاريخ (help)صيانة الاستشهاد: لغة غير مدعومة (link)
  8. ^ أ ب "v26.0.2". 18 أبريل 2024. اطلع عليه بتاريخ 2024-04-18.
  9. ^ وصلة مرجع: https://github.com/docker/docker/blob/master/LICENSE.
  10. ^ العنوان: LICENSE. الوصول: 26 مارس 2017. لغة العمل أو لغة الاسم: الإنجليزية.
  11. ^ البرنامج الافتراضي الحر دوكر (بالإنجليزية)
  12. ^ "dotCloud - About". web.archive.org. 2 يوليو 2014. مؤرشف من الأصل في 2020-08-31. اطلع عليه بتاريخ 2021-01-22.{{استشهاد ويب}}: صيانة الاستشهاد: BOT: original URL status unknown (link)
  13. ^ "dotCloud - One home for all your apps". web.archive.org. 17 مايو 2014. مؤرشف من الأصل في 2019-12-03. اطلع عليه بتاريخ 2021-01-22.
  14. ^ Raina, Ajeet. "Demystifying the Relationship Between Moby & Docker -" (بالإنجليزية البريطانية). Archived from the original on 2020-06-16. Retrieved 2021-01-22.
  15. ^ "What is a Container". Docker (بالإنجليزية). Archived from the original on 2018-08-06. Retrieved 2018-02-17.
  16. ^ المقارنة بين دوكر وباقي الأنظمة الافتراضية (بالفرنسية)
  17. ^ أ ب ت ث ج ح خ "Docker overview". Docker Documentation (بالإنجليزية). 22 Jan 2021. Archived from the original on 2021-01-17. Retrieved 2021-01-22.
  18. ^ "dockerd". Docker Documentation (بالإنجليزية). 22 Jan 2021. Archived from the original on 2021-01-19. Retrieved 2021-01-22.
  19. ^ "Use the Docker command line". Docker Documentation (بالإنجليزية). 22 Jan 2021. Archived from the original on 2020-12-24. Retrieved 2021-01-22.
  20. ^ "Work with notifications". Docker Documentation (بالإنجليزية). 22 Jan 2021. Archived from the original on 2021-01-10. Retrieved 2021-01-22.
  21. ^ "Overview of Docker Compose". Docker Documentation (بالإنجليزية). 22 Jan 2021. Archived from the original on 2021-01-18. Retrieved 2021-01-22.
  22. ^ "Compose command-line reference". Docker Documentation (بالإنجليزية). 22 Jan 2021. Archived from the original on 2020-11-28. Retrieved 2021-01-22.
  23. ^ "Orchestrate Containers for Development with Docker Compose". Rollout Blog (بالإنجليزية الأمريكية). 27 May 2015. Archived from the original on 2020-11-16. Retrieved 2021-01-22.
  24. ^ "Compose file". Docker Documentation (بالإنجليزية). 22 Jan 2021. Archived from the original on 2021-01-21. Retrieved 2021-01-22.
  25. ^ أ ب "Release 1.0.0 · docker/compose". GitHub (بالإنجليزية). Archived from the original on 2019-03-28. Retrieved 2021-01-22.
  26. ^ "Swarm mode overview". Docker Documentation (بالإنجليزية). 22 Jan 2021. Archived from the original on 2021-01-21. Retrieved 2021-01-22.
  27. ^ "docker node". Docker Documentation (بالإنجليزية). 22 Jan 2021. Archived from the original on 2020-11-26. Retrieved 2021-01-22.
  28. ^ "Docker Swarm". Aqua (بالإنجليزية الأمريكية). Archived from the original on 2021-01-22. Retrieved 2021-01-22.
  29. ^ "Raft Consensus Algorithm". raft.github.io. مؤرشف من الأصل في 2021-01-06. اطلع عليه بتاريخ 2021-01-22.

وصلات خارجية[عدل]

  • هذا المقال لا يملك بيانات على ويكي بيانات