Docker هي منصة مفتوحة المصدر تمكّن المطورين من إنشاء الحاويات ونشرها وتشغيلها وتحديثها وإدارتها.
الحاويات هي عناصر موحدة وقابلة للتنفيذ تجمع بين مصدر رمز التطبيق ومكتبات نظام التشغيل (OS) والتبعيات المطلوبة لتشغيل ذلك الرمز في أي بيئة.
تجدر الإشارة إلى أنه عندما يتحدث الناس عن Docker، فإنهم عادةً ما يشيرون إلى Docker Engine، وهو وقت التشغيل لبناء الحاويات وتشغيلها. ويشير Docker أيضًا إلى Docker, Inc.1، الشركة التي تبيع النسخة التجارية من Docker. كما يشير أيضًا إلى مشروع Docker مفتوح المصدر2 الذي تساهم فيه شركة .Docker, Inc والعديد من المنظمات والأفراد الآخرين.
تعمل الحاويات على تبسيط عملية تطوير التطبيقات الموزعة وتسليمها. وقد أصبحت شائعة بشكل متزايد مع تحول المؤسسات إلى تطوير السحابة الأصلية والبيئات الهجينة متعددة السحابة. يمكن للمطورين إنشاء حاويات بدون Docker من خلال العمل مباشرةً مع القدرات المضمنة في Linux وأنظمة التشغيل الأخرى، ولكن Docker تجعل النقل بالحاويات أسرع وأسهل. حتى وقت كتابة هذه السطور، أفادت Docker أن أكثر من 20 مليون مطور يستخدمون المنصة شهريًا3. مثل تقنيات الحاويات الأخرى، بما في ذلك Kubernetes، تلعب Docker دورًا مهمًا في تطوير البرامج الحديثة، وتحديدًا بنية الخدمات المصغرة.
على النقيض من النهج التقليدي المتجانس للتطبيق الكبير المترابط بإحكام، توفر الخدمات المصغرة إطار عمل بنية السحابة الأصلية. يُشكل هذا الإطار تطبيقًا واحدًا من العديد من العناصر أو الخدمات الأصغر حجمًا والأقل اقترانًا والقابلة للنشر بشكل مستقل. ويمكن وضع كل خدمة في حاويات باستخدام Docker، ما يسهل عملية النشر ويسمح للفرق بطرح إصدارات جديدة وتوسيع نطاق التطبيقات حسب الحاجة.
أصبحت الحاويات ممكنة بفضل قدرات عزل العمليات والمحاكاة الافتراضية المضمنة في نواة Linux. وتتضمن هذه القدرات مجموعات التحكم (Cgroups) لتخصيص الموارد بين العمليات و مساحات الأسماء لتقييد وصول العملية أو رؤيتها للموارد أو المناطق الأخرى في النظام.
تمكّن الحاويات عناصر التطبيقات المتعددة من مشاركة موارد مثيل واحد من نظام التشغيل المضيف. وتشبه هذه المشاركة الطريقة التي يسمح بها مراقب الأجهزة الافتراضية لعدة أجهزة افتراضية (VMs) بمشاركة وحدة المعالجة المركزية (CPU) ، والذاكرة والموارد الأخرى لخادم جهاز واحد.
توفر تقنية الحاويات كل وظائف الأجهزة الافتراضية (VMs) ومزاياها—بما في ذلك عزل التطبيقات وقابلية التوسع الفعالة من حيث التكلفة، بالإضافة إلى مزايا أخرى مهمة:
أبلغت المؤسسات التي تستخدم الحاويات عن العديد من المزايا الأخرى بما في ذلك تحسين جودة التطبيق والاستجابة الأسرع لتغيرات السوق والمزيد.
Docker هي أداة النقل بالحاويات الأكثر استخدامًا، حيث تبلغ حصتها السوقية 82.84%.4 تحظى Docker بشعبية كبيرة اليوم لدرجة أن مصطلحي "Docker" و"الحاويات" يُستخدمان بالتبادل. ومع ذلك، كانت التقنيات الأولى المتعلقة بالحاويات متاحة لسنوات—بل ولعقود5—قبل إصدار Docker علنًا كمصدر مفتوح في عام 2013.
على وجه الخصوص، في عام 2008، استُخدم LinuXContainers (LXC) في نواة Linux، ما أتاح المحاكاة الافتراضية الكاملة لمثيل واحد من Linux. وبينما لا يزال LXC مستخدمًا حتى اليوم، تتوفر تقنيات نواة Linux أحدث. يوفر Ubuntu، وهو نظام تشغيل Linux حديث مفتوح المصدر، هذه القدرة أيضًا. سمح Docker للمطورين بالوصول إلى قدرات النقل بالحاويات الأصلية هذه باستخدام أوامر بسيطة وأتمتتها من خلال واجهة برمجة تطبيقات (API) موفرة للجهد.
هناك العديد من المزايا لاستخدام Docker مقارنةً بـ LXC الأقدم والأقل توافقًا.
بينما تشير حاويات LXC غالبًا إلى التكوينات الخاصة بالجهاز، تعمل حاويات Docker دون تعديل عبر أي بيئة سطح مكتب أو مركز بيانات أو حوسبة سحابية.
باستخدام Docker، يمكن للمطورين دمج عمليات متعددة داخل حاوية واحدة. تتيح هذه المرونة إنشاء تطبيق يمكنه الاستمرار في العمل أثناء إزالة أحد أجزائه للتحديث أو الإصلاح.
يمكن لمنصة Docker إنشاء حاوية تلقائيًا استنادًا إلى مصدر رمز التطبيق.
يمكن لمنصة Docker تتبع إصدارات صورة الحاوية والعودة إلى الإصدارات السابقة وتتبع مَن بنى الإصدار وكيف بناه. كما يمكن لمنصة Docker حتى تحميل الاختلافات فقط (الإصدارات الجزئية لوحدات البرامج) بين الإصدار الحالي والإصدار الجديد.
يمكن للمطورين الوصول إلى سجل مفتوح المصدر يحتوي على آلاف الحاويات التي يسهم بها المستخدمون.
اليوم، تعمل عملية النقل بالحاويات الخاصة بمنصة Docker أيضًا Microsoft Windows Server وApple MacOS. ويمكن للمطورين تشغيل حاويات Docker على أي نظام تشغيل. يقدم كل مقدمي الخدمات السحابية (CSPs) الرائدين، بما في ذلك Amazon Web Services (AWS) وMicrosoft Azure وGoogle Cloud Services و®IBM Cloud، خدمات محددة لمساعدة المطورين على إنشاء التطبيقات في حاويات باستخدام Docker ونشرها وتشغيلها.
تستخدم Docker بنية العميل/الخادم. فيما يأتي تفصيل للعناصر الأساسية المرتبطة بمنصة Docker، إلى جانب مصطلحات Docker وأدواتها الأخرى.
مضيف Docker: مضيف Docker هو جهاز فعلي أو افتراضي يعمل بنظام التشغيل Linux (أو أي نظام تشغيل آخر متوافق مع Docker-Engine).
Docker Engine: محرك Docker هو تطبيق عميل/خادم يتكون من العمليات الخلفية لمنصة Docker وواجهة برمجة تطبيقات Docker التي تتفاعل مع العمليات الخلفية وواجهة سطر الأوامر (CLI) التي تتحدث إلى العمليات الخلفية.
عملية Docker الخلفية: عملية Docker الخلفية هي خدمة تنشئ صور Docker وتُديرها باستخدام الأوامر من العميل. تعمل عملية Docker الخلفية بشكل أساسي كمركز تحكم لتطبيق Docker.
عميل Docker: يوفر عميل Docker واجهة سطر الأوامر التي تصل إلى واجهة برمجة تطبيقات Docker (واجهة برمجة تطبيقات نقل الحالة التمثيلية) للتواصل مع عملية Docker الخلفية عبر مقابس Unix أو واجهة الشبكة. يمكن توصيل العميل بعملية خلفية عن بُعد، أو يمكن للمطور تشغيل العملية الخلفية والعميل على نظام الكمبيوتر نفسه.
كائنات Docker: كائنات Docker هي عناصر نشر Docker التي تساعد على حزم التطبيقات وتوزيعها. وهي تشمل الصور والحاويات والشبكات ووحدات التخزين والمكونات الإضافية وغيرها.
حاويات Docker: حاويات Docker هي المثيلات المباشرة قيد التشغيل لصور Docker. في حين أن صور Docker هي ملفات للقراءة فقط، فإن الحاويات هي محتوى مباشر وزائل وقابل للتنفيذ. يمكن للمستخدمين التفاعل معها، ويمكن للمسؤولين ضبط إعداداتها وشروطها باستخدام أوامر Docker.
صور Docker: تحتوي صور Docker على مصدر رمز التطبيق القابل للتنفيذ وكل الأدوات والمكتبات والتبعيات التي يحتاجها رمز التطبيق للتشغيل كحاوية. عندما يشغل المطور صورة Docker، تصبح مثيلاً واحدًا (أو عدة مثيلات) للحاوية.
من الممكن إنشاء صور Docker من الصفر، ولكن معظم المطورين يستخرجونها من المستودعات الشائعة. ويمكن للمطورين إنشاء صور Docker متعددة من صورة أساسية واحدة وسيتشاركون القواسم المشتركة للمجموعة.
تتكون صور Docker من طبقات، وتتوافق كل طبقة مع إصدار من الصورة. وكلما أجرى مطور تغييرات على صورة ما، تُنشأ طبقة علوية جديدة، وتحل هذه الطبقة العلوية محل الطبقة العلوية السابقة كإصدار حالي للصورة. ويُحتفظ بالطبقات السابقة لحالات التراجع أو لإعادة استخدامها في مشروعات أخرى.
في كل مرة تُنشأ فيها حاوية من صورة Docker، تُنشأ طبقة جديدة أخرى تسمى طبقة الحاوية. ويُحتفظ بالتغييرات التي تحدث على الحاوية—مثل إضافة ملفات أو حذفها—في طبقة الحاوية، ولا توجد هذه التغييرات إلا في أثناء تشغيل الحاوية.
تزيد عملية إنشاء الصورة التكرارية هذه من الكفاءة الإجمالية حيث يمكن تشغيل عدة مثيلات حاوية مباشرة من صورة أساسية واحدة. وعندما يفعلون ذلك، يستخدمون مجموعة مشتركة.
بناء Docker: بناء Docker هو أمر يحتوي على أدوات وميزات لبناء صور Docker.
Dockerfile: تبدأ كل حاوية من حاويات Docker بملف نصي بسيط يحتوي على تعليمات حول كيفية بناء صورة حاوية Docker. يجعل Dockerfile عملية إنشاء صور Docker آلية. إنه في الأساس قائمة بتعليمات واجهة سطر الأوامر التي سيشغلها Docker Engine لتجميع الصورة. قائمة أوامر Docker واسعة ولكنها موحدة: تعمل عمليات Docker بالطريقة نفسها بغض النظر عن المحتويات أو البنية التحتية أو متغيرات البيئة الأخرى.
وثائق Docker: تشير وثائق Docker، أو مستندات Docker، إلى مكتبة Docker الرسمية للموارد والأدلة والإرشادات الخاصة ببناء التطبيقات في حاويات.
Docker Hub: Docker Hub6 هو المستودع العام لصور Docker، ويطلق على نفسه أكبر مكتبة ومجتمع لصور الحاويات في العالم7. يحتوي على أكثر من 100000 صورة حاوية مصدرها موردو البرامج التجارية والمشروعات مفتوحة المصدر والمطورون الأفراد. يتضمن Docker Hub صورًا أنتجتها شركة .Docker, Inc وصورًا معتمدة تنتمي إلى Docker Trusted Registry وآلاف الصور الأخرى.
يمكن لجميع مستخدمي Docker Hub مشاركة صورهم حسب الرغبة. ويمكنهم أيضًا تنزيل الصور الأساسية المحددة مسبقًا من نظام ملفات Docker كنقطة انطلاق لأي مشروع نقل بالحاويات.
توجد مستودعات صور أخرى، بما في ذلك GitHub8. GitHub هي خدمة استضافة مستودعات معروفة جيدًا لأدوات تطوير التطبيقات وكمنصة تعزز التعاون والتواصل. يمكن لمستخدمي Docker Hub إنشاء مستودع (repo) الذي بإمكانه احتواء العديد من الصور. ويمكن أن يكون المستودع عامًا أو خاصًا ومرتبطًا بحسابات GitHub أو BitBucket.
سطح مكتب :Docker DesktopDocker هو تطبيق لنظام التشغيل Mac أو Windows يتضمن Docker Engine وعميل Docker CLI و Docker Compose و Kubernetes وغيرها. كما يوفر الوصول إلى Docker Hub.
سجل Docker: سجل Docker هو نظام تخزين وتوزيع مفتوح المصدر قابل للتوسع لصور Docker. وهو يمكّن المطورين من تتبع إصدارات الصور في المستودعات باستخدام الوسم لتحديد الهوية. ويتم هذا التتبع والتعريف باستخدام Git، وهي أداة للتحكم في الإصدار.
مكونات Docker الإضافية: يستخدم المطورون المكونات الإضافية لجعل Docker Engine أكثر فاعلية. يوجد العديد من مكونات Docker الإضافية التي تدعم التخويل ووحدة التخزين والشبكة في نظام المكونات الإضافية لمحرك Docker Engine؛ ويمكن تحميل المكونات الإضافية لجهات خارجية أيضًا.
إضافات Docker: تمكّن إضافات Docker المطورين من استخدام أدوات الطرف الثالث داخل Docker Desktop لتوسيع وظائفه. تتضمن إضافات أدوات المطورين تطوير تطبيق Kubernetes، والأمان، وقابلية الملاحظة وغيرها.
Docker Compose: يمكن للمطورين استخدام Docker Compose لإدارة التطبيقات متعددة الحاويات، حيث تعمل كل الحاويات على مضيف Docker نفسه. ينشئ Docker Compose ملف YAML (.YML) يحدد الخدمات المضمنة في التطبيق ويمكنه نشر الحاويات وتشغيلها بأمر واحد. ونظرًا لأن بناء جملة YAML لا يعتمد على اللغة، يمكن استخدام ملفات YAML في البرامج المكتوبة بلغة Java و Python و Ruby والعديد من اللغات الأخرى.
يمكن للمطورين أيضًا استخدام Docker Compose لتحديد وحدات التخزين الثابتة للتخزين وتحديد العقد الأساسية وتوثيق تبعيات الخدمة وتكوينها.
عند تشغيل عدد قليل من الحاويات، فإن إدارة تطبيق ما داخل Docker Engine، وهو وقت التشغيل الفعلي في الصناعة، أمر بسيط للغاية. ومع ذلك، بالنسبة لعمليات النشر التي تضم آلاف الحاويات ومئات الخدمات، يكاد يكون من المستحيل مراقبة دورات حياة الحاويات وإدارتها من دون أداة لتنسيق الحاويات .
بينما يتضمن Docker أداة التنسيق الخاصة به (تسمى Docker Swarm)، فإن Kubernetes هو معيار الصناعة. تشمل منصات تنسيق الحاويات الشائعة الأخرى Apache Mesos وNomad.
Kubernetes هي منصة مفتوحة المصدر لتنسيق الحاويات منبثقة من Borg، وهو مشروع طُور للاستخدام الداخلي في Google. يعمل Kubernetes، الذي طُرح للجمهور في عام 2014، على جدولة وأتمتة المهام التي تُعد جزءًا لا يتجزأ من إدارة البنى القائمة على الحاويات، بما في ذلك نشر الحاويات والتحديثات واكتشاف الخدمات وتوفير التخزين وموازنة الأحمال ومراقبة السلامة وغير ذلك. وفي عام 2015، تبرعت Google بمنصة Kubernetes إلى مؤسسة حوسبة السحابة الأصلية (CNCF)9، وهي مركز مفتوح المصدر ومحايد للموردين لحوسبة السحابة الأصلية.
بالإضافة إلى ذلك، فإن النظام البنائي المفتوح المصدر لأدوات Kubernetes، بما في ذلك Istio و Knative و Tekton، يمكّن المؤسسات من نشر منصة عالية الإنتاجية كخدمة (PaaS) للتطبيقات في حاويات. كما يوفر هذا النظام البنائي أيضًا طريقًا أسرع للحوسبة من دون خادم.
مبادرة الحاويات المفتوحة (OCI)10 ، التي تأسست في عام 2015 بعد أن تبرعت شركة Docker بمواصفات صورة الحاوية ورمز وقت التشغيل runc، هي مشروع تابع لمؤسسة Linux ملتزم بإنشاء معايير مفتوحة للصناعة حول تنسيق صورة الحاوية ووقت تشغيلها. تتألف مبادرة الحاويات المفتوحة من شركات رائدة، بما في ذلك Docker وIBM و®Red Hat. وهي تدعم الابتكار وتساعد المؤسسات على تجنب الاحتكار لمنتج معين.
على الرغم من أن Docker هي أكثر تقنيات الحاويات شهرةً واستخدامًا، إلا أن النظام البنائي الأوسع نطاقًا قد وحَّد معايير الحاويات على containerd والبدائل الأخرى، بما في ذلك LXC وCRI-O وPodman وغيرها. في عام 2017، تبرعت شركة Docker بمشروع containerd إلى مؤسسة حوسبة السحابة الأصلية. Containerd هو وقت تشغيل حاوية قياسي في الصناعة يستخدم runc وهو وقت تشغيل الحاوية الأساسي لمحرك Docker Engine.
يتطلب التعقيد الذي يحيط بأحمال التشغيل في الحاويات تنفيذ ضوابط الأمان التي تحمي الحاويات وبنيتها التحتية الأساسية وصيانتها. صُممت ممارسات أمان حاويات Docker لحماية التطبيقات في حاويات من المخاطر مثل حالات اختراق الأمن والبرامج الضارة والجهات سيئة النية.
نظرًا لأن حاويات Docker معزولة عن بعضها وعن النظام المضيف، فإنها تمتلك مستوى أمانًا متأصلاً في تصميمها. ومع ذلك، فإن هذا العزل ليس مطلقًا. يتمحور أمان Docker حول إطار عمل ثقة صفرية شامل يشمل وقت تشغيل الحاويات وبناءها وتنسيقها.
قد أدت الحاجة إلى أمان Docker والحاويات الأخرى إلى زيادة شعبية التطوير والأمن والعمليات. وهو نهج أمني يعمل على أتمتة تكامل الممارسات الأمنية في كل مرحلة من مراحل دورة حياة تطوير البرامج—التي تمتد من التصميم الأولي إلى التكامل والاختبار والتسليم والنشر. كما أن أفضل ممارسات أمان Docker تتضمن أدوات أمان الحاويات وحلوله التابعة لجهات خارجية، بما في ذلك الفحص والمراقبة التي يمكنها اكتشاف مشكلات الأمان قبل أن تؤثر في الإنتاج.
تعمل قابلية نقل Docker على تبسيط عملية الترحيل السحابي وتسريعها من بيئات متنوعة—سواء كانت نقل البيانات والتطبيقات وأعباء العمل من مركز بيانات محلي إلى بنية تحتية قائمة على السحابة أو من بيئة سحابية إلى أخرى.
وفقًا لموقع Statista، فإن أكثر من 85% من المؤسسات العالمية الكبيرة تستخدم الخدمات المصغرة لتطوير تطبيقاتها11. يعمل Docker على تبسيط عملية نشر التطبيقات حيث يمكن وضع كل خدمة مصغرة في حاويات وتوسيع نطاقها وإدارتها بشكل مستقل، ما يلغي حاجة المطورين إلى تكوين بيئات معينة وإدارتها.
تُعد Docker مثالية للتكامل المستمر والتسليم المستمر (CI/CD) لأنها توفر بيئة متسقة لاختبار التطبيقات ونشرها، ما يقلل من الأخطاء المحتملة في أثناء النشر.
يؤدي الجمع بين الخدمات المصغرة كنهج لتطوير البرامج و Docker إلى إنشاء أساس متين لفرق عمليات التطوير. فهو يسمح لهم بتبني ممارسات مرنة حتى يتمكنوا من التكرار والتجربة بسرعة، وهو أمر بالغ الأهمية لتقديم البرامج والخدمات بالسرعة التي يتطلبها السوق.
تعمل تقنية الوضع في حاويات خفيفة الوزن مثل Docker على تسهيل نقل التطبيقات عبر بيئات مختلفة. يقدم جميع مقدمي الخدمات السحابية الرئيسيين خدمات التطوير والإدارة المتعلقة بمنصة Docker التي تدعم تشغيل Docker في بيئات سحابية هجينة التي توحد الإعدادات المحلية وإعدادات السحابة العامة والسحابة الخاصة والحافة. يمكن نشر Docker بسهولة عبر البنية التحتية لتقنية المعلومات للسحابة المتعددة التي تشير إلى الخدمات السحابية من أكثر من مورد سحابي واحد.
تُمكن الحاويات كخدمة (CaaS) المطورين من إدارة التطبيقات في حاويات ونشرها، ما يسهل تشغيل حاويات Docker على نطاق واسع. يقدم جميع مقدمي الخدمات السحابية الرئيسيين الحاويات كخدمة كجزء من محافظ الخدمات السحابية الخاصة بهم، إلى جانب البنية التحتية كخدمة (IaaS) والبرمجيات كخدمة (SaaS) وما إلى ذلك.
تعمل Docker على تسريع عملية تطوير الذكاء الاصطناعي والتعلم الآلي من خلال تطوير تطبيقات سريعة وسهلة وقابلة للنقل، ما يسرع من الابتكار ووقت الوصول إلى السوق. كما أن Docker Hub هو موطن لمئات من صور الذكاء الاصطناعي/التعلم الآلي التي تدعم فرق تطوير الذكاء الاصطناعي/التعلم الآلي بشكل أكبر. في عام 2023، أطلقت شركة Docker ميزة Docker AI12 التي توفر للمطورين إرشادات تلقائية خاصة بالسياق عند تحرير Dockerfile أو ملف Docker Compose.
1 نبذة عن Docker، Docker
2 مشاريع مفتوحة المصدر، Docker
3 Docker Builds, Docker
4 أفضل 5 تقنيات للنقل بالحاويات في عام 2024، 6sense
5 لمحة موجزة عن تاريخ الحاويات: من سبعينيات القرن العشرين حتى الآن، Aqua، 10 يناير 2020
6 Docker Hub, Docker
7 نظرة عامة على Docker Hub، Docker
8 GitHub
9 أساسيات الحوسبة السحابية الأصلية
11 الاستخدام العالمي للخدمات المصغرة في المؤسسات عام 2021، حسب حجم المؤسسة، Statista، 2023
12 Docker تعلن عن Docker AI لتعزيز إنتاجية المطورين من خلال التوجيه الآلي المحدد للسياق، Docker، 2023