دوكر (برمجية)
دوكر (بالإنجليزية: 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]
المراجع
- وصلة مرجع: https://docs.docker.com/engine/installation/linux/. الوصول: 19 أغسطس 2016.
- وصلة مرجع: https://docs.docker.com/docker-for-windows/. الوصول: 19 أغسطس 2016.
- وصلة مرجع: https://docs.docker.com/docker-for-mac/. الوصول: 19 أغسطس 2016.
- اسم المُؤَلِّف بالحروف: Tim Tsai. محدد موقع الموارد المُوحَّد: https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/. تاريخ النشر: 7 يونيو 2019.
- وصلة مرجع: https://api.github.com/repos/docker/docker. الوصول: 6 مارس 2017.
- وصلة مرجع: http://thenewstack.io/go-programming-language-helps-docker-container-ecosystem/. الوصول: 19 أغسطس 2016.
- "Docker bekommt 15 Millionen Risikokapital" (باللغة الألمانية)، heise online، 23 يناير 2014، اطلع عليه بتاريخ 13 يناير 2017.
{{استشهاد ويب}}
: تحقق من التاريخ في:|access-date=
و|date=
(مساعدة)، الوسيط|archive-url=
غير صحيح: timestamp (مساعدة)صيانة CS1: لغة غير مدعومة (link) - "Tags".
- وصلة مرجع: https://github.com/docker/docker/blob/master/LICENSE.
- العنوان: LICENSE. الوصول: 26 مارس 2017. لغة العمل أو لغة الاسم: الإنجليزية.
- البرنامج الافتراضي الحر دوكر (بالإنجليزية)
- "dotCloud - About"، web.archive.org، 02 يوليو 2014، مؤرشف من الأصل في 31 أغسطس 2020، اطلع عليه بتاريخ 22 يناير 2021.
- "dotCloud - One home for all your apps"، web.archive.org، 17 مايو 2014، مؤرشف من الأصل في 3 ديسمبر 2019، اطلع عليه بتاريخ 22 يناير 2021.
- Raina, Ajeet، "Demystifying the Relationship Between Moby & Docker -" (باللغة الإنجليزية)، مؤرشف من الأصل في 16 يونيو 2020، اطلع عليه بتاريخ 22 يناير 2021.
- "What is a Container"، Docker (باللغة الإنجليزية)، مؤرشف من الأصل في 6 أغسطس 2018، اطلع عليه بتاريخ 17 فبراير 2018.
- المقارنة بين دوكر وباقي الأنظمة الافتراضية (بالفرنسية)
- "Docker overview"، Docker Documentation (باللغة الإنجليزية)، 22 يناير 2021، مؤرشف من الأصل في 17 يناير 2021، اطلع عليه بتاريخ 22 يناير 2021.
- "dockerd"، Docker Documentation (باللغة الإنجليزية)، 22 يناير 2021، مؤرشف من الأصل في 19 يناير 2021، اطلع عليه بتاريخ 22 يناير 2021.
- "Use the Docker command line"، Docker Documentation (باللغة الإنجليزية)، 22 يناير 2021، مؤرشف من الأصل في 24 ديسمبر 2020، اطلع عليه بتاريخ 22 يناير 2021.
- "Work with notifications"، Docker Documentation (باللغة الإنجليزية)، 22 يناير 2021، مؤرشف من الأصل في 10 يناير 2021، اطلع عليه بتاريخ 22 يناير 2021.
- "Overview of Docker Compose"، Docker Documentation (باللغة الإنجليزية)، 22 يناير 2021، مؤرشف من الأصل في 18 يناير 2021، اطلع عليه بتاريخ 22 يناير 2021.
- "Compose command-line reference"، Docker Documentation (باللغة الإنجليزية)، 22 يناير 2021، مؤرشف من الأصل في 28 نوفمبر 2020، اطلع عليه بتاريخ 22 يناير 2021.
- "Orchestrate Containers for Development with Docker Compose"، Rollout Blog (باللغة الإنجليزية)، 27 مايو 2015، مؤرشف من الأصل في 16 نوفمبر 2020، اطلع عليه بتاريخ 22 يناير 2021.
- "Compose file"، Docker Documentation (باللغة الإنجليزية)، 22 يناير 2021، مؤرشف من الأصل في 21 يناير 2021، اطلع عليه بتاريخ 22 يناير 2021.
- "Release 1.0.0 · docker/compose"، GitHub (باللغة الإنجليزية)، مؤرشف من الأصل في 28 مارس 2019، اطلع عليه بتاريخ 22 يناير 2021.
- "Swarm mode overview"، Docker Documentation (باللغة الإنجليزية)، 22 يناير 2021، مؤرشف من الأصل في 21 يناير 2021، اطلع عليه بتاريخ 22 يناير 2021.
- "docker node"، Docker Documentation (باللغة الإنجليزية)، 22 يناير 2021، مؤرشف من الأصل في 26 نوفمبر 2020، اطلع عليه بتاريخ 22 يناير 2021.
- "Docker Swarm"، Aqua (باللغة الإنجليزية)، مؤرشف من الأصل في 22 يناير 2021، اطلع عليه بتاريخ 22 يناير 2021.
- "Raft Consensus Algorithm"، raft.github.io، مؤرشف من الأصل في 06 يناير 2021، اطلع عليه بتاريخ 22 يناير 2021.
وصلات خارجية
- هذا المقال لا يملك بيانات على ويكي بيانات
- بوابة إنترنت
- بوابة برمجيات حرة
- بوابة تقانة
- بوابة تقنية المعلومات
- بوابة شركات
- بوابة علم الحاسوب
- بوابة لينكس