1.2 · تشغيل الحاويات : المنافذ والأسماء والأنماط والمتغيرات

المستوى 1 · الحاويات : الصور، المجلدات، الشبكات

1.2تشغيل الحاويات : المنافذ والأسماء والأنماط والمتغيرات

الهدف: تشغيل أي خدمة من Hub مع كشف المنافذ والضبط.
الوقت المقدّر: 13 دقيقة · قراءة ذاتية · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 30 ثانية

  • نشر منفذ = باب الدخول : -p 8080:80 يربط منفذ 8080 في الجهاز بمنفذ 80 في الحاوية (Conteneur) — اليسار = المضيف، واليمين = الحاوية ؛ ودون نشر، تبقى الخدمة غير مرئية.
  • منفصل أو تفاعلي، نظامان : الخدمات تعمل في -d (الخلفية)، والأدوات الظرفية في -it (طرفية مرتبطة) — فخادم في -it يحجز الطرفية.
  • الضبط دون إعادة بناء : -e CLÉ=valeur يقود الصور الرسمية و--name يعطي هوية ثابتة لاستهداف الحاوية (السجلات، وexec، والإيقاف).

حالة مستمرة — إدير يشغّل منصة التجربة

على إدير عرض التطبيق على مسؤول : قاعدة Postgres وواجهة Nginx على جهازه. يشغّل القاعدة منفصلة، باسم bdd، مع كلمة المرور في -e — دون نشر منفذها، غير اللازم لعرض محلي. ثم يشغّل الويب باسم web مع -p 8080:80 ويفتح http://localhost:8080 : فتظهر الصفحة. وعندما يسأل مسؤوله « أي حاوية هي القاعدة؟ »، يجيب إدير « bdd » — اسم، لا معرفا ست عشريا.

تتمة حالة 1.1 — ينتقل إدير من الصور المختارة إلى الحاويات المشغّلة.

1. نشر منفذ : باب الدخول

تعيش الحاوية في شبكتها المعزولة : فدون نشر، منفذها 80 غير مرئي من الجهاز. و-p 8080:80 يربط منفذ 8080 في الجهاز بمنفذ 80 في الحاوية. والقاعدة : اليسار = المضيف، واليمين = الحاوية. ويمكن لحاويتين كشف المنفذ الداخلي نفسه بمنفذي مضيف مختلفين.

ولا ننشر إلا ما يجب الوصول إليه من الخارج : الواجهة الأمامية نعم، وقاعدة البيانات لا (تبقى قابلة للوصول داخليا، القسم 1.4).

2. منفصل أو تفاعلي : نظامان

تعمل الخدمات في المنفصل (-d، في الخلفية). وتعمل الأدوات الظرفية في التفاعلي (-it، طرفية مرتبطة : docker run -it --rm ubuntu:24.04 bash). ولا نخلط : فخادم في -it يحجز الطرفية، وصدفة في -d غير صالحة.

والمنعكس : « هل هي خدمة يجب أن تعمل وحدها؟ -d. هل هي أداة أحتاج لوحتها؟ -it. »

3. الضبط دون إعادة بناء : -e و--name

تُقاد الصور الرسمية بمتغيرات البيئة (-e POSTGRES_PASSWORD=secret) : فلا حاجة لإعادة بناء صورة لتغيير كلمة مرور. ويعطي --name هوية ثابتة لاستهداف الحاوية (السجلات، وexec، والإيقاف).

الاسم + المتغيرات + المنافذ : 90 % من التشغيلات في سطر واحد. والمتغيرات مجمّدة عند الإنشاء : فلتغييرها، نحذف ونعيد التشغيل.

خطأ شائع في الفهم: « يُقرأ -p 8080:80 في الاتجاهين، و-it تصلح أيضا لخادم ». لا. فالترتيب مضيف:حاوية (والعكس = كشف المنفذ الخطأ أو الفشل)، وخادم مشغّل في -it يحجز الطرفية : فحال إغلاقها، تتبعها الخدمة. الخدمات في -d، والأدوات في -it — وليس العكس أبدا.
تشغيل خدمة قابلة للوصول سمِّ، وانشر المنفذ، واحقن الضبط --name + -d هويةثابتة، في الخلفية-p مضيف:حاوية اليسار =المضيف، واليمين = الحاوية-e الضبط دون إعادةبناء الصورة
سمِّ، وانشر المنفذ، واحقن الضبط
نص المخطط (SEO / قارئات الشاشة / الترجمة): 1) التسمية : يشغّل إدير قاعدته مع --name bdd منفصلة (-d)، ليستهدفها لاحقا. 2) النشر : يشغّل الويب مع -p 8080:80 — اليسار مضيف، واليمين حاوية — ويفتح http://localhost:8080. 3) الضبط : كلمة مرور القاعدة تمر في -e، دون إعادة بناء الصورة. الدرس : الاسم + المنافذ + المتغيرات في سطر واحد ؛ وتبقى القاعدة غير منشورة لأن لا شيء من الخارج يجب أن يصلها.

🔎 مثال ملموس — 🔎 مثال ملموس — Postgres وNginx قابلان للوصول

منصة عرض إدير : قاعدة متحفظة، وويب متاح.

docker run -d --name bdd -e POSTGRES_PASSWORD=secret postgres:16.4
docker run -d --name web -p 8080:80 nginx:1.27

القراءة : القاعدة تعمل في الخلفية دون منفذ منشور (غير لازم)، والويب يجيب على http://localhost:8080.

الدرس : لا ننشر إلا ما يجب الوصول إليه من الخارج.

مفردات القسم

-p مضيف:حاوية
نشر منفذ الحاوية نحو الجهاز المضيف ؛ اليسار = المضيف، واليمين = الحاوية.

مثال بسيط: -p 8080:80 يجعل وب إدير قابلا للوصول على http://localhost:8080.

ما ليس كذلك: فتح منفذ داخل الحاوية وحدها.

رد فعل: أعد قراءة اليسار/اليمين قبل كل run.

-d (منفصل)
نمط الخلفية : تعمل الحاوية دون حجز الطرفية ؛ نظام الخدمات.

مثال بسيط: قاعدة bdd ووب إدير يعملان في -d أثناء العرض.

ما ليس كذلك: طرفية مرتبطة يجب تركها مفتوحة.

رد فعل: خدمة دائمة = -d.

-it (تفاعلي)
طرفية مرتبطة بالحاوية (غالبا مع --rm للاستعمالات المرمية) ؛ نظام الأدوات الظرفية.

مثال بسيط: docker run -it --rm ubuntu:24.04 bash للتجريب.

ما ليس كذلك: نمط خادم إنتاج.

رد فعل: حاجة للوحة = -it، وليس لخادم أبدا.

-e و--name
تحقن -e متغير ضبط عند الإقلاع ؛ ويعطي --name هوية ثابتة لقيادة الحاوية.

مثال بسيط: -e POSTGRES_PASSWORD=secret و--name bdd عند إدير.

ما ليس كذلك: ضبط محفور في الصورة.

رد فعل: الضبط في -e، والاسم منهجي للخدمات الدائمة.

في التطبيق — عمليا — شغّلوا خدمتين

  1. شغّلوا قاعدة postgres مسماة مع كلمة مرور في -e.
  2. شغّلوا nginx مع نشر 8080:80 وافتحوا localhost:8080.
  3. افتحوا صدفة في كل حاوية (exec) وقارنوا.
  4. أوقفوا الحاويتين واحذفوهما بنظافة.
تشغّلون كل خدمة من Hub مع المنافذ والاسم والضبط.

نص جاهز — تشغيل خدمة (30 ثانية)

« أشغّل منفصلا مع اسم : --name web -d. أنشر منفذ المضيف نحو الحاوية : -p 8080:80، اليسار مضيف، واليمين حاوية. أمرّر الضبط في متغيرات -e، دون لمس الصورة. أتحقق على localhost:8080. »

يُقال مع كتابة الأمر سطرا بسطر ؛ مع عرض طرفية محجوزة بـ -it للمقارنة.

قالب جاهز للنسخ — سطر التشغيل

docker run -d --name MONSERVICE \
  -p HOTE:CONTENEUR \
  -e CLE=valeur \
  image:tag-fige
# مثال : وب إدير :
# docker run -d --name web -p 8080:80 nginx:1.27

عرض إدير في الجزائر

كما أعلاه : bdd غير منشورة + وب في 8080:80 — فيرى المسؤول التطبيق، وتبقى القاعدة غير مرئية من الخارج.

أداة مرمية

docker run -it --rm ubuntu:24.04 bash : طرفية مرتبطة، وحذف تلقائي عند الخروج — نظام الأدوات، وليس الخوادم أبدا.

واجهتان تتعايشان

Nginx مزدوجة بالمنفذ الداخلي 80 نفسه، منشورتان في 8080:80 و8081:80 : منفذ المضيف يختلف، ومنفذ الحاوية متماثل.

تغيير كلمة مرور

فـ -e مجمّدة عند الإنشاء : نحذف الحاوية ونعيد التشغيل بالقيمة الجديدة — ولا إعادة تشغيل سحرية.

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

✓ ممارسات جيدة

  • سمّوا منهجيا الخدمات الدائمة.
  • لا تنشروا إلا المنافذ اللازمة.
  • مرّروا الضبط بـ -e، وليس محفورا في الصورة.

✗ أخطاء شائعة

  • عكس مضيف:حاوية في -p.
  • تشغيل خادم في -it (طرفية محجوزة).
  • وضع كلمة مرور صريحة في السجل دون انتباه.

النقاط الأساسية

  • يربط -p المضيف والحاوية (يسار/يمين).
  • -d للخدمات، و-it للأدوات.
  • تضبط -e دون إعادة بناء.
  • يجعل --name كل شيء قابلا للقيادة.

تحدي 48 ساعة — طبّق غدا

شغّلوا خدمتين مسماتين (قاعدة في -e غير منشورة + وب في 8080:80)، وافتحوا localhost:8080، ثم أوقفوا واحذفوا بنظافة. ودوّنوا ترتيب مضيف:حاوية دون عكسه.

قائمة الخروج من القسم
  • أنشر المنافذ بالترتيب الصحيح (مضيف:حاوية).
  • أختار -d لخدمة، و-it لأداة.
  • أضبط في -e وأسمّي كل خدمة دائمة.
تقييم ذاتي 1-5 : هل أعيد قراءة اليسار/اليمين قبل كل -p؟هل لكل حاوية دائمة --name؟

أسئلة شائعة

لماذا لا يجيب localhost:80 مع أن الحاوية تعمل؟

لأن المنفذ غير منشور : فالخدمة تصغي في الشبكة المعزولة للحاوية. أضيفوا -p مضيف:حاوية إلى run — اليسار = المضيف، واليمين = الحاوية.

هل نعيد التشغيل لتغيير متغير -e؟

نعم : فالمتغيرات مجمّدة عند الإنشاء. نحذف ونعيد التشغيل (أو ننتقل إلى Compose في المستوى 3 لترقيم الكل).

تحقّق من فهمك

تشغّلون « docker run -d -p 8080:80 nginx ». ماذا يعني 8080:80؟

موارد إضافية (اختياري، للتعمّق أكثر)

اختبار المستوى 1أسئلة جديدة وأصعب للتحقق من مكتسباتك