لا توجد نتائج

بحثك لم يطابق أي نتائج.

نقترح أن تجرِّب ما يلي للمساعدة في العثور على ما تبحث عنه:

  • تحقق من تهجئة كلماتك الرئيسية التي تبحث عنها.
  • استخدم المرادفات للكلمة الرئيسية التي كتبتها، على سبيل المثال، جرِّب “تطبيق” بدلاً من “برنامج.”
  • جرِّب إحدى عمليات البحث الشائعة الموضحة أدناه.
  • ابدأ بحثًا جديدًا.
الأسئلة الرائجة

حاويات Docker Containers وContainer Cloud Services

الحاوية عبارة عن تنسيق حزم يحزم كل التعليمات البرمجية والتبعيات الخاصة بأحد التطبيقات بتنسيق قياسي يسمح بتشغيله بسرعة وبصورة موثوقة عبر بيئات الحوسبة. حاوية Docker عبارة عن حاوية خفيفة الوزن ومستقلة وقابلة للتنفيذ تتضمن كل العناصر اللازمة لتشغيل تطبيق، بما في ذلك المكتبات وأدوات النظام والتعليمات البرمجية ووقت التشغيل. إن Docker أيضًا عبارة عن نظام أساسي برمجي يتيح للمطورين إنشاء تطبيقات حاويات واختبارها ونشرها بصورة سريعة.

إن Containers as a Service (‏CaaS) أو Container Services عبارة عن خدمات سحابية مُدارة تدير دورة حياة الحاويات. تساعد خدمات الحاويات على تنظيم (بدء، إيقاف، قياس) وقت تشغيل الحاويات. باستخدام خدمات الحاويات، يمكنك تبسيط دورة حياة تطوير التطبيقات ونشرها وأتمتتها وتسريعها.

شهدت Docker وContainer Services اعتمادًا سريعًا وحققت نجاحًا هائلاً على مدار السنوات العديدة الماضية. من تقنية مفتوحة المصدر غير معروفة تقريبًا في عام 2013، تطورت Docker إلى بيئة وقت تشغيل قياسية مدعومة رسميًا للعديد من منتجات Oracle Enterprise.

من يستخدم Docker؟

إن Docker عبارة عن إطار عمل تطوير تطبيق مفتوح تم تصميمه لتحقيق الفائدة لـ DevOps وللمطورين. باستخدام Docker، يمكن للمطورين إنشاء التطبيقات وحزمها وشحنها وتشغيلها بسهولة باعتبارها حاويات خفيفة الوزن ومحمولة ومكتفية ذاتيًا، والتي يمكن تشغيلها في أي مكان تقريبًا. تسمح الحاويات للمطورين بحزم تطبيق بالإضافة إلى كل تبعياته ونشره في صورة وحدة واحدة. من خلال توفير حاويات تطبيقات تم إنشاؤها مسبقًا وذاتية الاستدامة، يمكن للمطورين التركيز على التعليمات البرمجية للتطبيق واستخدامه دون القلق بشأن نظام التشغيل الأساسي أو نظام النشر.

بالإضافة إلى ذلك، يمكن للمطورين الاستفادة من آلاف تطبيقات الحاويات مفتوحة المصدر التي تم تصميمها بالفعل للتشغيل داخل حاوية Docker. بالنسبة لفرق DevOps، تٌكيِّف Docker نفسها للتكامل المستمر وسلاسل أدوات التطوير كما تقلل من القيود والتعقيدات اللازمة داخل بنية النظام لنشر التطبيقات وإدارتها. من خلال تقديم الخدمات السحابية لتنسيق الحاوية، يمكن لأي مطور تطوير التطبيقات الموجودة في حاويات محليًا في بيئة التطوير الخاصة بها، ثم نقل تلك التطبيقات الموجودة في حاويات وتشغيلها في مرحلة الإنتاج على الخدمات السحابية، مثل خدمات Kubernetes المُدارة.

Docker مقابل Kubernetes

توجد حاويات Linux منذ عام 2008، لكنها لم تكن معروفة جيدًا حتى ظهور حاويات Docker في عام 2013. مع بداية ظهور حاويات Docker، ظهر الاهتمام بتطوير التطبيقات الموجودة في حاويات ونشرها. نظرًا لتزايد عدد التطبيقات الموجودة في حاويات ليشمل مئات الحاويات المنتشرة عبر خوادم متعددة، أصبح تشغيلها أكثر تعقيدًا. كيف تقوم بتنسيق المئات من الحاويات وقياسها وإدارتها وجدولتها؟ هذا هو المكان الذي يمكن لـ Kubernetes من خلاله تقديم المساعدة. Kubernetes عبارة عن نظام تنسيق مفتوح المصدر يتيح لك إمكانية تشغيل حاويات Docker وأحمال العمل. يساعدك على إدارة تعقيدات التشغيل عند الانتقال إلى توسيع نطاق الحاويات المتعددة المنشورة عبر خوادم متعددة. ينظم محرك Kubernetes دورة حياة الحاوية تلقائيًا، ويوزع حاويات التطبيق عبر البنية التحتية للاستضافة. يمكن لـ Kubernetes توسيع نطاق الموارد أو تضييقه بسرعة، حسب الطلب. تعمل باستمرار على توفير صحة الحاويات وجدولتها وحذفها ومراقبتها.

أساسيات Docker

تتمثل المفاهيم الأساسية لـ Docker في الصور والحاويات. تشتمل صورة Docker على كل ما هو مطلوب لتشغيل برنامجك: التعليمة البرمجية، ووقت التشغيل (على سبيل المثال، Java Virtual Machine (‏JVM) وبرامج التشغيل والأدوات والبرامج النصية والمكتبات وعمليات النشر وغيرها.

حاوية Docker عبارة عن مثيل قيد التشغيل لصورة Docker. وعلى الرغم من ذلك، على عكس المحاكاة الافتراضية التقليدية باستخدام مراقب الأجهزة الافتراضية من النوع 1 أو النوع 2، تعمل حاوية Docker على نواة نظام التشغيل المضيف. داخل صورة Docker، لا يوجد نظام تشغيل منفصل، على النحو موضح في الشكل 1.

صورة أساسيات docker
الشكل 1

العزلة مقابل الافتراضية

تشتمل كل حاوية Docker على نظام ملفات خاص بها، ومكدس شبكة خاص بها (وبالتالي عنوان IP خاص بها)، ومساحة معالجة خاصة بها، وقيود موارد محددة لوحدة المعالجة المركزية والذاكرة. نظرًا لأن حاوية Docker لا يجب أن تخضع لخطوة تمهيد نظام التشغيل، فإنها تبدأ على الفور. تتعلق Docker بالعزل، أي فصل موارد نظام تشغيل مضيف، مقابل الافتراضية، أي توفير نظام تشغيل ضيف أعلى نظام التشغيل المضيف.

VM مقابل Kubernetes - البنية التحتية للنشر
صورة نظام الملفات المتزايدة
الشكل 2

نظام الملفات المتزايدة

يتكون نظام الملفات الخاص بصورة Docker من طبقات، مع دلالات النسخ عند الكتابة. يتيح ذلك التوريث وإعادة الاستخدام، ويحفظ الموارد على القرص، ويتيح تنزيل الصور بصورة متزايدة.

على النحو الموضح في الشكل 2، يمكن أن تستند صورة Docker المدعومة بنشر WebLogic إلى صورة مدعومة بمجال Oracle WebLogic Server، والذي يمكن أن يعتمد على صورة WebLogic، والتي تستند إلى صورة Java Development Kit (‏JDK)، والتي بدورها تعتمد على صورة قاعدة Oracle Linux.

سجل Docker

على الرغم من أنه يسهل إنشاء صور Docker ويحب المطورون بساطة صور Docker وإمكانية نقلها، إلا إنهم اكتشفوا بسرعة أن إدارة الآلاف من صور Docker يمثل تحديًا كبيرًا. يعالج سجل Docker هذا التحدي. يعد سجل Docker طريقة قياسية لتخزين صور Docker وتوزيعها. السجل عبارة عن مستودع مفتوح المصدر يعتمد على ترخيص Apache المتساهل.

يساعد سجل Docker أيضًا على تحسين التحكم في الوصول وأمان صور Docker المخزنة في مستودعاته. يدير توزيع الصور ويمكنه أيضًا التكامل مع مهام سير عمل تطوير التطبيقات. يمكن للمطورين إعداد سجل Docker الخاص بهم، أو استخدام خدمة سجل Docker المستضافة مثل Docker Hub، وسجل حاويات Oracle، وسجل حاويات Azure، وما إلى ذلك.

Docker Hub عبارة عن سجل Docker مستضاف تديره Docker. يشتمل Docker Hub على أكثر من 100000 صورة حاوية من موردي البرامج والمشروعات مفتوحة المصدر والمجتمع. يشتمل Docker Hub على برامج وتطبيقات من مستودعات رسمية مثل NGINX وLogstash وApache HTTP وGrafana وMySQL وUbuntu وOracle Linux.

عند بدء تشغيل حاوية، ستقوم Docker على نحو افتراضي بسحب الصورة المطابقة تلقائيًا من Docker Hub العام إذا لم تكن متوفرة محليًا. بالإضافة إلى ذلك، يمكنك أيضًا إنشاء صورك الخاصة ودفعها إلى Docker Hub في مستودع عام أو خاص.

الشكل 3: لقطة شاشة سجل Docker
الشكل 3

Docker باعتباره وقت تشغيل الخدمات الصغيرة

تجذب فكرة تقسيم التطبيقات المتجانسة إلى أجزاء أصغر من الخدمات الصغيرة الكثير من الاهتمام في الوقت الحالي بين مطوري البرامج.

يتم نشر الخدمات الصغيرة بصورة مستقلة بصفتها عملية، وتستخدم بروتوكولات خفيفة الوزن للتواصل بعضها مع بعض، وتمتلك كل خدمة بياناتها [7]. نظرًا لأن الخدمات الصغيرة تتبع نهج إدارة لامركزي، فإنها تحتاج إلى قدر كبير من أتمتة البنية التحتية والاختبار المؤتمت ومسارات CD المؤتمتة بالكامل وفرق DevOps التي تتسم بالمهارة والمرونة.

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

لذلك، يضعك تشغيل خدمة صغيرة في حاوية Docker في نقطة انطلاق ممتازة لتحقيق معظم هذه الأهداف.

Docker—بعدان رئيسيان

تغير Docker طريقة إنشاء البرامج وشحنها وتشغيلها في بعدين مختلفين:

  • إنها تعزز عملية الحصول على التطبيقات بصورة موثوقة من مرحلة التطوير إلى مرحلة الإنتاج.
  • كما توفر تنسيق صورة قياسي للانتقال من أماكن العمل إلى السحابة.

يرد شرح كلا البعدين بمزيد من التفصيل في الفقرات التالية.

صورة Docker—التطوير إلى الإنتاج

يؤدي إنشاء صورة Docker بكل تبعياتها إلى حل مشكلة "لكنها عملت معي على جهاز التطوير الخاص بي". تتمثل الفكرة الأساسية في أن صورة Docker يتم إنشاؤها تلقائيًا بواسطة مسار إنشاء من مستودع تعليمات برمجية مصدرية مثل Git واختبارها مبدئيًا في بيئة تطوير. ثم بعد ذلك سيتم تخزين هذه الصورة غير القابلة للتغيير في سجل Docker.

على النحو الموضح في الشكل 4، سيتم استخدام الصورة نفسها لإجراء المزيد من اختبارات التحميل واختبارات التكامل واختبارات القبول وغيرها. في كل بيئة، سيتم استخدام الصورة نفسها. يمكن إدخال الاختلافات الصغيرة ولكنها ضرورية خاصة فيما يتعلق بالبيئة، مثل JDBC URL لقاعدة بيانات الإنتاج، في الحاوية باعتبارها متغيرات أو ملفات بيئة.

لقطة شاشة صورة docker
الشكل 4

تشير الإحصاءات إلى أن 65% من جميع حالات استخدام Docker الحالية قيد التطوير، و48% يستخدمون Docker بهدف التكامل المستمر [5].

من أماكن العمل إلى السحابة

قامت Docker بتغيير اعتماد السحب العامة: من ناحية، من خلال صورة Docker، ولأول مرة في التاريخ، يوجد تنسيق حزمة مشترك يمكن تشغيله في أماكن العمل وكذلك على كل مقدم خدمة سحابية رئيسي. يتم تشغيل حاويات Docker على الكمبيوتر المحمول الخاص بي بنفس طريقة تشغيلها على Oracle Cloud.

ومن ناحية أخرى—نظرًا لأن حاويات Docker تعمل على كل سحابة عامة رئيسية - فهي تعد مساهمة كبيرة في إطار التغلب على التحيز المنسق منذ فترة طويلة ضد السحب العامة: تقيد الموردين. يقدم كل مقدمة خدمة سحابية رئيسي الآن Docker باعتبارها PaaS.

إصدارات Docker—اكتمال التكنولوجيا الأساسية

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

على الرغم من تطور Docker وسطر الأوامر الخاص بها والبرنامج الخفي Docker وواجهة برمجة التطبيقات وأدوات مثل Docker Swarm وDocker Machine وDocker Compose فقط في السنوات الثلاث الماضية، إلا إن ميزات النواة الأساسية كانت متاحة في كل نواة Linux منذ ما يقرب من عِقد من الزمان.

من الأمثلة البارزة على اعتماد تكنولوجيا الحاويات في وقت مبكر Google. تستخدم Google حاويات Linux حتى قبل وجود Docker. بالإضافة إلى ذلك، تدير Google كل شيء في حاوية. تشير التقديرات إلى أن Google تبدأ تشغيل 2 مليار حاوية في الأسبوع [3].

Cgroups وNamespaces History

تعد ميزات نواة Linux الأساسية التي تستخدمها Docker بمثابة مجموعات cgroups ومساحات أسماء. في عام 2008، تم تقديم مجموعات cgroup إلى نواة Linux اعتمادًا على العمل الذي قام به مطورو Google سابقًا [1]. تعمل مجموعات Cgroups على تحديد استخدام الموارد لمجموعة من عمليات نظام التشغيل وتفسيرها.

تستخدم نواة Linux مساحة الاسم لعزل موارد النظام الخاصة بالعمليات بعضها عن بعض. تم تقديم مساحة الاسم الأول، أي مساحة الاسم تثبيت، في وقت مبكر من عام 2002.

خدمات السحابة للحاوية

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

يتطلب إعداد بيئة إنتاج وتشغيلها أجهزة لتشغيل الحاويات. يجب تثبيت البرامج مثل Docker، إلى جانب المستودعات ومديري المجموعات، وترقيتها وتصحيحها. عند اتصال العديد من حاويات Docker عبر الأجهزة المضيفة، يجب إنشاء شبكة. يجب إعادة تشغيل الحاويات المجمعة في حالة فشلها. بالإضافة إلى ذلك، يجب أن تكون مجموعة الحاويات المرتبطة بعضها ببعض قابلة للنشر بصورة سهلة مثل مثيل تطبيق منطقي واحد. من الأمثلة على ذلك نجد موازن التحميل، ومجموعة قليلة من خوادم الويب، وبعض مثيلات Oracle WebLogic Server مع خادم مسؤول، وخادم مُدار، وقاعدة بيانات. لإدارة التطبيقات الموجودة في حاويات على نطاق واسع، يلزم توفر نظام تنسيق للحاويات مثل Kubernetes أو Docker Swarm. قد يكون نشر أنظمة التنسيق مثل Kubernetes وإدارتها وتشغيلها أمرًا صعبًا ويستغرق وقتًا طويلاً.

لتسهيل إنشاء التطبيقات الموجودة في حاويات وجعلها أكثر كفاءة للمطورين، يوفر مقدمو الخدمات السحابية خدمات Container Cloud Services أو Containers as a Service (‏CaaS). تساعد خدمات Container Cloud Services المطورين وفرق العمليات على تبسيط دورة حياة الحاويات وإدارتها بطريقة مؤتمتة. تُسهل خدمات التنسيق هذه، المُصممة عادةً باستخدام Kubernetes، على فرق DevOps عمليات إدارة التطبيقات الموجودة في حاويات وتشغيلها على نطاق واسع. يعد Oracle Container Engine for Kubernetes وAzure Kubernetes Service مثالين على الخدمات السحابية الشائعة المدارة بتنسيق الحاويات.

Oracle Container Engine for Kubernetes عبارة عن خدمة مُدارة بالكامل وقابلة للتوسيع ومتاحة للغاية، يمكنك استخدامها لنشر تطبيقاتك الموجودة في حاويات في السحابة. استخدم Container Engine for Kubernetes (يُعرف اختصارًا في بعض الأحيان باسم OKE فقط) عندما يريد فريق التطوير لديك إنشاء تطبيقات السحابة الأصلية ونشرها وإدارتها على نحو موثوق.

صور Docker من Oracle—فيما يلي بعض المصادر للحصول على صور Docker لمنتجات Oracle أو إنشائها. يشتمل مستودع Oracle GitHub لصور Docker على Dockerfiles وعينات لإنشاء صور Docker لمنتجات Oracle التجارية ومشروعات مفتوحة المصدر برعاية Oracle.

مختبر Docker العملي—التطوير داخل الحاويات باستخدام Docker

المراجع

  1. Cgroups (ويكيبيديا)
  2. مساحات أسماء Linux (ويكيبيديا)
  3. كل شيء في Google يعمل في حاوية إعداد Jack Clark
  4. Docker Hub يحصد 5 مليارات من عمليات السحب
  5. تطور سلسلة توريد البرمجيات الحديثة، استبيان Docker 2016
  6. MOS Doc ID 2216342.1: دعم Docker لـ Oracle DB
  7. الخدمات الصغيرة إعداد Martin Fowler
  8. عرض توضيحي لـ Oracle Container Engine والسجل (3:13)
  9. وثائق Container Engine for Kubernetes