1.2تشغيل الحاويات : المنافذ والأسماء والأنماط والمتغيرات
الأساسي في 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 % من التشغيلات في سطر واحد. والمتغيرات مجمّدة عند الإنشاء : فلتغييرها، نحذف ونعيد التشغيل.
🔎 مثال ملموس — 🔎 مثال ملموس — 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، والاسم منهجي للخدمات الدائمة.
في التطبيق — عمليا — شغّلوا خدمتين
- شغّلوا قاعدة postgres مسماة مع كلمة مرور في -e.
- شغّلوا nginx مع نشر 8080:80 وافتحوا localhost:8080.
- افتحوا صدفة في كل حاوية (exec) وقارنوا.
- أوقفوا الحاويتين واحذفوهما بنظافة.
نص جاهز — تشغيل خدمة (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، وليس محفورا في الصورة.
✗ أخطاء شائعة
- عكس مضيف:حاوية في -p.
- تشغيل خادم في -it (طرفية محجوزة).
- وضع كلمة مرور صريحة في السجل دون انتباه.
النقاط الأساسية
- يربط -p المضيف والحاوية (يسار/يمين).
- -d للخدمات، و-it للأدوات.
- تضبط -e دون إعادة بناء.
- يجعل --name كل شيء قابلا للقيادة.
تحدي 48 ساعة — طبّق غدا
شغّلوا خدمتين مسماتين (قاعدة في -e غير منشورة + وب في 8080:80)، وافتحوا localhost:8080، ثم أوقفوا واحذفوا بنظافة. ودوّنوا ترتيب مضيف:حاوية دون عكسه.
- أنشر المنافذ بالترتيب الصحيح (مضيف:حاوية).
- أختار -d لخدمة، و-it لأداة.
- أضبط في -e وأسمّي كل خدمة دائمة.
أسئلة شائعة
لماذا لا يجيب localhost:80 مع أن الحاوية تعمل؟
لأن المنفذ غير منشور : فالخدمة تصغي في الشبكة المعزولة للحاوية. أضيفوا -p مضيف:حاوية إلى run — اليسار = المضيف، واليمين = الحاوية.
هل نعيد التشغيل لتغيير متغير -e؟
نعم : فالمتغيرات مجمّدة عند الإنشاء. نحذف ونعيد التشغيل (أو ننتقل إلى Compose في المستوى 3 لترقيم الكل).
تشغّلون « docker run -d -p 8080:80 nginx ». ماذا يعني 8080:80؟