حوّل أوامر docker run إلى ملف compose.yaml: المنافذ ووحدات التخزين والشبكات وفحوص السلامة
يعمل في متصفحك. لا يُرسل أي شيء تكتبه إلى أي مكان. تم التحقق في 16 أكتوبر 2026.لكل خيار في docker run مفتاح مقابل في Compose. تبقى الصورة في image، وتُنقل 5 خيارات شائعة مباشرة: يصبح -p هو ports، و-e هو environment، و-v هو volumes، و--restart هو restart، و--name هو container_name، بينما يقابل -it المفتاحين stdin_open وtty. أما خيارات مثل -d و--rm فلا مقابل لها، لأن docker compose up -d يشغّل الخدمات في الخلفية.
تُرجمت هذه الصفحة آليًا من الأصل الإنجليزي. لم يراجع أي شخص هذه الترجمة بعد، لذا فالنسخة الإنجليزية هي التي يُعتمد عليها. اقرأ الأصل الإنجليزي
الصق أمر docker run واحدًا أو أكثر، بما في ذلك فواصل الأسطر بالشرطة المائلة العكسية، أو انقر على جرّب مثالًا.
اقرأ ملف compose.yaml على اليمين: خدمة واحدة لكل أمر، مع إعلان وحدات التخزين والشبكات في الأسفل.
راجع الملاحظات الخاصة بالخيارات التي لا مقابل لها في Compose، مثل --rm.
انقر على تنزيل لحفظ compose.yaml، ثم شغّل docker compose up -d في المجلد نفسه.
أمر docker run الذي يعمل هو أفضل نقطة انطلاق لملف Compose، لكن إعادة كتابة 10 خيارات يدويًا تفتح الباب للأخطاء. الصق الأمر، أو عدة أوامر، واحصل على ملف compose.yaml فيه خدمة لكل أمر، وفق Compose Specification، ليعمل مع docker compose up -d.
| docker run | compose.yaml |
|---|---|
--name web |
container_name: web |
-p 8080:80 |
ports: ["8080:80"] |
-e KEY=value |
environment: ["KEY=value"] |
-v data:/data |
volumes: مع data: في المستوى الأعلى |
--network shop-net |
networks: مع shop-net: external: true |
--restart unless-stopped |
restart: unless-stopped |
-it |
stdin_open: true، tty: true |
--gpus all |
deploy.resources.reservations.devices |
ما الذي يُفهم. أكثر من 70 خيارًا من خيارات docker run، بكل صيغة تقبلها Docker CLI: --flag value و--flag=value و-p80:80 والخيارات القصيرة المجمّعة مثل -it أو -dp 3000:3000. تُدمج الأوامر المقسّمة على عدة أسطر باستخدام \ (bash) أو ^ (cmd) أو ` (PowerShell)، وتُقرأ علامات الاقتباس كما تقرؤها الصدفة، ويصبح $(pwd) في وحدة التخزين ./، لأن Compose يحلّ المسارات انطلاقًا من مجلد ملف Compose.
عدة أوامر دفعة واحدة. الصق نص إعداد كاملًا: يصبح كل docker run خدمة، وتُتخطى الأوامر الأخرى مثل docker network create، وتحصل الخدمات التي تتشارك الصورة نفسها على أسماء مختلفة.
لا شيء مخفي. الخيارات التي لا مقابل لها في Compose، مثل --rm و-d، وأي خيار لا تعرفه الأداة، تُدرج أسفل النتيجة بدلًا من أن تختفي. توضع المنافذ وقيم البيئة بين علامات اقتباس، حتى لا يفسّر أي قارئ YAML القيمة 22:22 على أنها رقم. لا يحتوي الملف على المفتاح version:، الذي جعلته Compose Specification متقادمًا.
كل شيء يعمل في متصفحك؛ والأوامر التي تلصقها، والتي كثيرًا ما تحتوي على كلمات مرور، لا تُرسل إلى أي مكان.
امنح كل خيار مفتاحه في Compose داخل خدمة: الصورة في image، و-p في ports، و-e في environment، و-v في volumes، و--name في container_name، و--restart في restart. وتحصل وحدات التخزين المسمّاة والشبكات المخصصة أيضًا على إدخال في المستوى الأعلى. عند لصق الأمر هنا يُكتب ملف compose.yaml كاملًا، جاهزًا لـ docker compose up -d.
يصبح الخيار -i هو stdin_open: true ويصبح -t هو tty: true، لذا يضبط -it كليهما. أما الخيار -d فلا مفتاح له، لأن docker compose up -d يشغّل كل خدمة في الخلفية. للاتصال لاحقًا بخدمة قيد التشغيل، استخدم docker compose attach أو docker compose exec مع اسم الخدمة.
لا شيء في الملف: خدمات Compose مصممة لتبقى، لذا لا يوجد مفتاح يحذف الحاوية عند توقفها. لمهمة لمرة واحدة، شغّل docker compose run --rm مع اسم الخدمة، فتُزال تلك الحاوية بعد انتهائها. وتوضّح الملاحظة أسفل النتيجة متى حُذف --rm.
يستخدم docker run مع --network shop-net شبكة موجودة مسبقًا. ووسمها بـ external يخبر Compose بالانضمام إلى تلك الشبكة بدلًا من إنشاء شبكته الخاصة، حتى تظل الحاويات التي شُغّلت بالطريقتين قادرة على التواصل. إذا أردت أن ينشئ Compose الشبكة ويديرها بنفسه، فاحذف السطر external: true.
نعم، اكتب المنافذ كسلاسل نصية مثل "8080:80". بعض قارئات YAML تعامل رقمين يفصل بينهما نقطتان رأسيتان كرقم في النظام الستيني، فقد تصبح 22:22 هي 1342 وتعطّل ربط منفذ SSH. تضع هذه الأداة كل منفذ وكل إدخال بيئة وكل سلسلة لوحدة تخزين بين علامات اقتباس، حتى يحمل الملف المعنى نفسه في كل مكان.
لا. جعلت Compose Specification المفتاح version: متقادمًا، وتُظهر الإصدارات الحديثة من docker compose تحذيرًا عند وجوده. تبدأ الملفات المُنشأة هنا مباشرة بـ services:، يليها volumes: وnetworks: عندما تستخدم الأوامر وحدات تخزين مسمّاة أو شبكات مخصصة.
تتغير المعدلات والقواعد؛ راجع المصدر قبل الاعتماد على أي رقم.
هل ما زلت عالقًا؟ اسأل عن تحويل docker run إلى docker compose ويمكن لأي شخص يعرف الإجابة أن يجيب. لا حاجة إلى حساب.