Hopp til innhold

دوكير - ما هو دوكير؟

Skip to content

هذا نص مترجم آليًا وقد يحتوي على أخطاء!

ما هو Docker؟

ستقوم بإعداد خادم ويب على خادم Linux. إحدى الخيارات هي تثبيت الخادم الويب وجميع التبعيات مباشرةً في نظام تشغيل الخادم. باستخدام Docker، يمكنك بدلاً من ذلك الحصول على صورة (image) جاهزة وإنشاء حاوية (container) منها.

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

قبل البدء: هل تستطيع شرح الفرق بين جهاز افتراضي (VM) وحاجية؟ إذا كنت غير متأكد، ابدأ بـالحاويات والأجهزة الافتراضية. ستجد هناك أيضاً كيفية تشغيل Docker داخل جهاز افتراضي Linux على Proxmox.

الموقع ضمن المادة الدراسية: Docker هو أداة لتقنية الحاويات. نواة النظام التشغيلي تشرح ما تتشاركه الحاويات. خريطة المراجعة تظهر العلاقة بين نظام التشغيل والجهاز الافتراضي والحواوي والأدوات.

Docker هو الأداة التي تُدير الحاويات

يمكن لـ Docker بناء وسحب الصور، وإنشاء وتشغيل الحاويات وإدارة شبكات التخزين والتخزين لها. على خادم Linux، يقوم محرك Docker (Docker Engine) بهذا العمل.

عند كتابة أمر docker run، تستخدم عميل سطر أوامر الخاص بـ Docker. يرسل العميل طلبًا إلى خدمة Docker، وهي dockerd، والتي تدير الحاوية. في إعدادات التمرين، يعمل كل من العميل والخدمة داخل آلة افتراضية لـ Linux.

يمكنك إدخال الأمر عبر وحدة تحكم الآلة الافتراضية في Proxmox أو خلال جلسة SSH لنفس الآلة الافتراضية. كلا المسارين يتحكمان في Docker داخل نفس الآلة الافتراضية. أما Docker Desktop فهو منتج آخر يجمع أدوات Docker في برنامج سطح مكتب؛ وهو غير ضروري لإعداد الخادم هنا.

يمكن استخدام صورة واحدة لإنشاء عدة حاويات

يُستخدم Image nginx:alpine لإنشاء حاويتين منفصلتين. تُسمى الأولى min-nginx وهي قيد التشغيل، بينما تُسمى الثانية test-nginx وهي متوقفة. يبقى الـImage موجودًا بشكل مستقل عن كلتا الحافتين.

الـصورة (image) هي حزمة تحتوي على الملفات والبرنامج والإعدادات المستخدمة لإنشاء الحاوية. يُعدّ nginx:alpine مثالاً: يشير nginx إلى اسم الصورة، أما alpine فهي وسم (tag)، وهو تسمية تشير إلى نسخة من الصورة. قد يشير الوسم لاحقًا إلى إصدار جديد.

الحاوية (container) هي حالة مستقلة مٌنشأة من الصورة، ولها اسم وحالة وطبقة قابلة للكتابة خاصة بها. يمكن أن تكون الحاوية في وضع الإنشاء أو التشغيل أو الإيقاف. وبالتالي فإن إيقاف البرنامج لا يعني حذف الحاوية.

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

من أين يأتي الصورة؟

يخزّن سجل الحاويات ويوزّع الصور. دوكير هب وسجل حاويات جيت هاب هما مثالان على ذلك.

عندما توجد صورة في السجل ولكن ليس على الخادم، يمكن لدوكير سحبها باستخدام أمر docker pull. يمكنك أيضًا بناء صورتك الخاصة من الكود المصدري وملف Dockerfile؛ ستتعرف على هذا الأمر في المستوى الثاني.

المصطلح في مثال خادم الويب
سجل دوكير هب، حيث يمكن الحصول على صورة نجنكس.
صورة nginx:alpine، الحزمة التي تم تنزيلها.
حاوية min-nginx، نسخة مستقلة أنشئت من الحزمة.
خدمة خادم ويب يستجيب لطلبات HTTP أثناء تشغيل البرنامج.

ما معنى أوامر البداية؟

أنت بحاجة فقط إلى قراءة هذا المثال الآن. ستأتي التثبيت والتنفيذ العملي في المستوى 1.

docker pull nginx:alpine
docker run -d --name min-nginx -p 8080:80 nginx:alpine
docker ps

تجلب الأمر الأول الصورة. ينشئ الأمر الثاني ويبدأ الحاوية min-nginx ويربط منفذ الخادم 8080 بمنفذ الحاوية 80. يعرض الأمر الثالث الحاويات قيد التشغيل. أما نغينكس فهو البرنامج الذي يستجيب للطلبات، بينما يتولى دوكير إدارة البيئة التي يعمل فيها.

افترض ما الذي سيبقى

لديك صورة واحدة (image) وحاويتان منها. توقف فقط عن تشغيل min-nginx ثم احذفه.

  1. هل لا تزال الصورة موجودة؟
  2. هل ستختفي test-nginx أيضًا؟
  3. هل يمكنك إنشاء حاوية جديدة من هذه الصورة؟

تحقق من الإجابة: الصورة لا تزال موجودة، ولم يتم حذف test-nginx. يمكنك إنشاء حاوية جديدة من نفس الصورة. ومع ذلك، فإن الملفات الموجودة حصريًا في الطبقة القابلة للكتابة الخاصة بـ min-nginx ستكون قد اختفت عند إزالة تلك الحاوية.

أنت جاهز للمستوى الأول عندما تتمكن من شرح الفرق بكلماتك الخاصة وتحديد السجل والصورة والحاوية والخدمات في المثال. إذا كنت تخلط بين الصورة والحاجاة، استخدم المخطط وحاول مرة أخرى بأسماء حاويات مختلفة.如果你想探究更多,请解释为什么仅使用 docker ps 不会显示图像是否存在或已停止的容器是否仍被保存。

المزيد من القراءة

قم بتثبيت محرك Docker (/main/Docker_Engine). استخدم مورد الحاويات كدعم عند رغبتك في استكشاف العلاقة مع الآلات الافتراضية والتخزين المؤقت للعمليات البرمجية (virtualization).

المصادر: بنية Docker، والصورة ودورة حياة الحاضنة ([حاوية] container) (https://docs.docker.com/reference/cli/docker/container/). الرسم التوضيحي مرسوم لهذا المورد.