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

من ويكيبيديا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث
دوكر
Docker (container engine) logo.svg
معلومات عامة
نوع
virtualization engine (en) ترجم — صيغة حاوية رقمية عدل القيمة على Wikidata
نظام التشغيل
المنصة
إكس86-64بنية إيه آر إم[4] — IBM S/390 (en) ترجم عدل القيمة على Wikidata
النموذج المصدري
حقوق التأليف والنشر محفوظة عدل القيمة على Wikidata
المطور الأصلي
Solomon Hykes (en) ترجم عدل القيمة على Wikidata
المطورون
Docker, Inc. (en) ترجم عدل القيمة على Wikidata
موقع الويب
(الإنجليزية) www.docker.comالاطلاع ومراجعة البيانات على ويكي داتا
معلومات تقنية
لغة البرمجة
implementation of
الإصدار الأول
الإصدار الأخير
المستودع
الرخصة
رخصة أباتشي 2.0[9][10] — رخصة مملوكة عدل القيمة على Wikidata
الملفات المقروءة
  • Dockerfile (en) ترجم عدل القيمة على Wikidata
الملفات المنتجة
  • Dockerfile (en) ترجم عدل القيمة على Wikidata
  • دوكر (بالإنجليزية: 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. ^ وصلة مرجع: http://thenewstack.io/go-programming-language-helps-docker-container-ecosystem/. الوصول: 19 أغسطس 2016.
    6. ^ "Docker bekommt 15 Millionen Risikokapital" (باللغة الألمانية). heise online. 23 يناير 2014. اطلع عليه بتاريخ 13 يناير 2017. الوسيط |CitationClass= تم تجاهله (مساعدة); |archive-url= is malformed: timestamp (مساعدة); تحقق من التاريخ في: |access-date=, |date= (مساعدة)صيانة CS1: لغة غير مدعومة (link)
    7. أ ب "20.10.7". 2 يونيو 2021. اطلع عليه بتاريخ 5 يونيو 2021. الوسيط |CitationClass= تم تجاهله (مساعدة); تحقق من التاريخ في: |access-date=, |date= (مساعدة)
    8. أ ب "v20.10.7". 2 يونيو 2021. اطلع عليه بتاريخ 5 يونيو 2021. الوسيط |CitationClass= تم تجاهله (مساعدة); تحقق من التاريخ في: |access-date=, |date= (مساعدة)
    9. ^ وصلة مرجع: https://github.com/docker/docker/blob/master/LICENSE.
    10. ^ العُنوان: LICENSE. الوصول: 26 مارس 2017. لغة العمل أو لغة الاسم: الإنجليزية.
    11. ^ البرنامج الافتراضي الحر دوكر (بالإنجليزية)
    12. ^ "dotCloud - About". web.archive.org. 2014-07-02. مؤرشف من الأصل في 31 أغسطس 2020. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    13. ^ "dotCloud - One home for all your apps". web.archive.org. 2014-05-17. مؤرشف من الأصل في 3 ديسمبر 2019. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    14. ^ Raina, Ajeet. "Demystifying the Relationship Between Moby & Docker -" (باللغة الإنجليزية). مؤرشف من الأصل في 16 يونيو 2020. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    15. ^ "What is a Container". Docker (باللغة الإنجليزية). مؤرشف من الأصل في 6 أغسطس 2018. اطلع عليه بتاريخ 17 فبراير 2018. الوسيط |CitationClass= تم تجاهله (مساعدة)
    16. ^ المقارنة بين دوكر وباقي الأنظمة الافتراضية (بالفرنسية)
    17. أ ب ت ث ج ح خ "Docker overview". Docker Documentation (باللغة الإنجليزية). 2021-01-22. مؤرشف من الأصل في 17 يناير 2021. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    18. ^ "dockerd". Docker Documentation (باللغة الإنجليزية). 2021-01-22. مؤرشف من الأصل في 19 يناير 2021. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    19. ^ "Use the Docker command line". Docker Documentation (باللغة الإنجليزية). 2021-01-22. مؤرشف من الأصل في 24 ديسمبر 2020. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    20. ^ "Work with notifications". Docker Documentation (باللغة الإنجليزية). 2021-01-22. مؤرشف من الأصل في 10 يناير 2021. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    21. ^ "Overview of Docker Compose". Docker Documentation (باللغة الإنجليزية). 2021-01-22. مؤرشف من الأصل في 18 يناير 2021. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    22. ^ "Compose command-line reference". Docker Documentation (باللغة الإنجليزية). 2021-01-22. مؤرشف من الأصل في 28 نوفمبر 2020. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    23. ^ "Orchestrate Containers for Development with Docker Compose". Rollout Blog (باللغة الإنجليزية). 2015-05-27. مؤرشف من الأصل في 16 نوفمبر 2020. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    24. ^ "Compose file". Docker Documentation (باللغة الإنجليزية). 2021-01-22. مؤرشف من الأصل في 21 يناير 2021. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    25. أ ب "Release 1.0.0 · docker/compose". GitHub (باللغة الإنجليزية). مؤرشف من الأصل في 28 مارس 2019. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    26. ^ "Swarm mode overview". Docker Documentation (باللغة الإنجليزية). 2021-01-22. مؤرشف من الأصل في 21 يناير 2021. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    27. ^ "docker node". Docker Documentation (باللغة الإنجليزية). 2021-01-22. مؤرشف من الأصل في 26 نوفمبر 2020. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    28. ^ "Docker Swarm". Aqua (باللغة الإنجليزية). مؤرشف من الأصل في 22 يناير 2021. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)
    29. ^ "Raft Consensus Algorithm". raft.github.io. مؤرشف من الأصل في 06 يناير 2021. اطلع عليه بتاريخ 22 يناير 2021. الوسيط |CitationClass= تم تجاهله (مساعدة)

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