← جميع الأسئلة
ما هو دوكر وكيف يعمل؟
غالبًامبتدئDevOps

ما هو دوكر وكيف يعمل؟

إجابة مختصرة
Docker عبارة عن منصة مفتوحة لتعبئة التطبيقات وتشغيلها كحاويات: العمليات المعزولة التي تشترك في نواة Linux الخاصة بالمضيف (عبر مساحات الأسماء ومجموعات التحكم) بدلاً من الحاجة إلى جهاز افتراضي كامل. ويستخدم نموذج خادم العميل: يرسل عميل docker الأوامر عبر REST API إلى البرنامج الخفي dockerd، والذي يبني الصور ويدير الحاويات منها.

سبب وجوده. يتيح لك Docker تجميع تطبيق بكل تبعياته (المكتبات، والتكوين، ووقت التشغيل) في قطعة أثرية واحدة - صورة - وتشغيله بشكل مماثل على كمبيوتر محمول للمطور، وفي CI، وفي الإنتاج. يؤدي هذا إلى حل المشكلة الكلاسيكية "يعمل على جهازي".

الحاويات مقابل الأجهزة الافتراضية. يقوم الجهاز الافتراضي بمحاكاة الأجهزة ويشحن نظام التشغيل الضيف بالكامل باستخدام النواة الخاصة به. الحاوية عبارة عن عملية معزولة تستخدم نواة المضيف. ونتيجة لذلك، أصبحت الحاويات أخف وزنًا، وتبدأ في أجزاء من الثانية، وتستخدم موارد أقل. لكن الحاوية ليست جهاز افتراضي خفيف الوزن: فهي مرتبطة بالنواة المضيفة، وحدود العزل الخاصة بها أضعف من الأجهزة الافتراضية. يتمتع الجهاز الظاهري بعزل مفروض عن طريق الأجهزة، في حين أنه من المحتمل أن يتم الهروب من الثغرة الأمنية في النواة المشتركة من الحاوية - وهذا هو المفاضلة بين السرعة والكثافة. يجب أن يتطابق المضيف مع نوع الحاوية: تحتاج حاويات Linux إلى Linux kernel، وتحتاج حاويات Windows إلى Windows kernel. في نظامي التشغيل macOS وWindows، يقوم Docker Desktop بتشغيل جهاز Linux VM صغير بشفافية (على سبيل المثال عبر WSL2)، لذا فإن حاويات Linux هناك تشترك في نواة الجهاز الافتراضي، وليس نواة نظام التشغيل الخاص بك.

الهندسة المعمارية (خادم العميل). وفقًا لوثائق Docker:

  • عميل docker هو الطريقة الأساسية التي يتفاعل بها المستخدمون مع Docker؛ يتم إرسال أوامر مثل docker run إلى البرنامج الخفي.
  • البرنامج الخفي dockerd "يقوم بالأعمال الثقيلة" لبناء وتشغيل وتوزيع الحاويات وإدارة الكائنات مثل الصور والحاويات والشبكات ووحدات التخزين.
  • يتحدث العميل إلى البرنامج الخفي عبر REST API عبر مقبس UNIX أو واجهة الشبكة، حتى يتمكن من التشغيل على أجهزة مختلفة.
  • السجل يخزن الصور؛ العام الافتراضي هو Docker Hub.

الصور والحاويات. تشبيه مفيد: الصورة تشبه فئة (أو برنامجًا على القرص)، والحاوية هي مثيل لها (عملية قيد التشغيل)؛ يمكنك بدء العديد من الحاويات من صورة واحدة.

  • الصورة هي قالب للقراءة فقط يحتوي على تعليمات لإنشاء حاوية، مبنية من طبقات. يتم تعريفه بواسطة Dockerfile; عندما تقوم بتغييره، يتم إعادة بناء الطبقات التي تم تغييرها فقط.
  • الحاوية هي نسخة قابلة للتشغيل من الصورة. فوق طبقات الصورة للقراءة فقط، يتم إضافة طبقة رفيعة قابلة للكتابة (نسخ عند الكتابة)؛ يتم فقدان أي شيء مكتوب هناك عند إزالة الحاوية - وهذا هو بالضبط سبب احتياج البيانات الدائمة إلى وحدات تخزين.

كيفية عمل العزل (تحت الغطاء). لا يستدعي dockerd النواة مباشرةً، بل يفوض إدارة دورة حياة الحاوية إلى containerd، مما يستدعي وقت تشغيل OCI؛ في Docker، يكون الإعداد الافتراضي هو runc، ولكن وقت التشغيل قابل للتوصيل (crun، وgVisor، وKata، وما إلى ذلك). العزلة الفعلية تأتي من ميزات Linux kernel:

  • مساحات الأسماء عزل الموارد (في صفحة man7 هناك 8 أنواع: PID، الشبكة، التحميل، UTS، IPC، المستخدم، cgroup، الوقت). "ترى" العملية فقط معرفات PID الخاصة بها ومكدس الشبكة الخاص بها وما إلى ذلك.
  • cgroups (مجموعات التحكم) تحدد وتحسب استخدام الموارد (وحدة المعالجة المركزية، الذاكرة، الإدخال/الإخراج).

المتابعات الشائعة. يتم تخزين طبقات الصورة مؤقتًا؛ يقوم docker compose بتشغيل تطبيقات متعددة الحاويات؛ تستمر البيانات عبر وحدات التخزين (الحاوية سريعة الزوال بشكل افتراضي)؛ وتقوم OCI بتوحيد تنسيق الصورة (مواصفات الصورة)، ووقت التشغيل (مواصفات وقت التشغيل)، وبروتوكول توزيع التسجيل (مواصفات التوزيع) - هذه المواصفات الثلاثة تحافظ على قابلية التشغيل البيني للنظام البيئي.

Dockerالحاويات

حمّله الآن وجرّبه مجانًا على مهامك!

تنزيل لنظام Windows
10 15 رصيد مجاني • لا حاجة لبطاقة ائتمانالإصدار: جارٍ التحميل…

بدون تثبيت - نزّل وشغّل. بدون تسجيل - دخول عبر Google.