ما هو أمر Docker Exec وكيف يعمل؟

قام Docker بتغيير مشهد تطوير البرمجيات ونشره بشكل أساسي ، مما يسمح للتطبيقات بالتشغيل في حاويات خفيفة الوزن. يضمن Docker الاتساق عبر بيئات مختلفة من آلات التطوير إلى خوادم الإنتاج. نظرًا لأن المطورين ومسؤولي النظام يعتمدون بشكل متزايد على Docker ، فمن الضروري إتقان الأوامر التي تجعل إدارة الحاويات فعالة وسلسة. أحد هذه القيادة القوية هو docker exec
.
في منشور المدونة هذا ، سنتغرف في ماهية أمر Docker Exec ، وكيفية عمله ، وكيف يمكنك استخدامه بفعالية في سيناريوهات العالم الحقيقي.
اقرأ أيضًا: 8 أفضل حاويات Docker للخوادم المنزلية في عام 2025
ما هو أمر Docker Exec؟
ال docker exec
يتيح لك الأمر تنفيذ الأوامر داخل حاوية Docker قيد التشغيل. يوفر طريقة مباشرة للتفاعل مع الحاويات دون تعديل تكوينها أو إعادة تشغيلها. سواء كنت ترغب في استكشاف مشكلة ما ، أو فحص حالة الحاوية ، أو تشغيل المهام الإدارية داخل بيئة حاوية ، docker exec
يجعل الأمر ممكنًا.
على عكس docker run
، والتي تبدأ حاوية جديدة ، docker exec
يعمل على الحاويات التي تعمل بالفعل. هذا التمييز أمر بالغ الأهمية لأنه يتيح التفاعل في الوقت الفعلي دون تعطيل الحالة الحالية للحاوية. كما يختلف عن docker attach
الذي يتصل بالعملية الرئيسية للحاوية ، وغالبًا ما يكون مع مرونة أقل.
باختصار، docker exec
هو أمر الانتقال عندما تحتاج إلى “القفز من الداخل” حاوية وأداء العمليات مباشرة ، مثل استخدام SSH للوصول إلى جهاز افتراضي.
بناء الجملة والاستخدام الأساسي
فهم بناء جملة docker exec
هي الخطوة الأولى لاستخدامه بفعالية. إليك ما يبدو عليه الأمر الأساسي:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
دعونا نقسم هذا:
- خيارات: أعلام اختيارية تعدل السلوك (على سبيل المثال ، الوضع التفاعلي).
- حاوية: اسم أو معرف الحاوية الجارية.
- يأمر: الأمر الفعلي الذي تريد تنفيذه داخل الحاوية.
- أرج …: وسيطات اختيارية لتمريرها إلى هذا الأمر.
مثال:
docker exec -it my_container
هذا الأمر يفعل ما يلي:
-i
: يبقي stdin مفتوحًا ، مما يسمح لك بإدخال الأوامر.-t
: يخصص زائفة زائفة ، مما يجعل الجلسة تفاعلية.my_container
: يحدد الحاوية المستهدفة.
يستخدم هذا بشكل شائع للحصول على قشرة تفاعلية داخل حاوية بحيث يمكنك استكشاف أو تصحيح.
أمثلة عملية
دعونا نلقي نظرة على بعض الأمثلة العملية حيث docker exec
يصبح مفيدًا للغاية:
فحص حاوية قيد التشغيل
إذا كنت ترغب في استكشاف ما يحدث داخل حاوية جارية:
docker exec -it web_container /bin/bash
سيؤدي ذلك إلى إسقاطك في قذيفة باش تتيح لك فحص السجلات أو التكوينات أو تشغيل العمليات.
فحص متغيرات البيئة
لرؤية متغيرات البيئة داخل الحاوية:
docker exec web_container printenv
مفيد عندما تريد التحقق من تكوينات وقت التشغيل.
إعادة تشغيل خدمة داخل حاوية
للحاويات التي تعمل على تشغيل خدمات مثل Apache أو MySQL:
docker exec app_container service apache2 restart
هذا يعيد تشغيل خدمة Apache دون إعادة تشغيل الحاوية بأكملها.
تشغيل أوامر إدارية لمرة واحدة
دعنا نقول أنك تريد الوصول إلى MySQL تشغيل داخل حاوية:
docker exec -it db_container mysql -u root -p
يتصل هذا بـ MySQL من داخل الحاوية باستخدام CLI الأصلي.
اقرأ أيضًا: كيفية تثبيت Docker على Linux Mint: دليل شامل
الأعلام والخيارات الرئيسية
فيما يلي أهم الأعلام التي يجب أن تعرفها عند الاستخدام docker exec
:
-i
: الحفاظ على stdin مفتوحة (حتى لو لم يكن مرفقا).-t
: تخصيص زائفة. استخدم هذا للقذائف التفاعلية.--user
: قم بتشغيل الأمر كمستخدم معين. هذا مفيد للأذونات.--env
: تمرير متغير البيئة إلى الأمر.--workdir
: اضبط دليل العمل داخل الحاوية.--detach
أو-d
: تشغيل الأمر في الخلفية.
مثال: التشغيل كمستخدم مختلف
docker exec --user www-data my_container whoami
هذا سيعود www-data
، التحقق من أن الأمر ركض تحت سياق المستخدم. هذا مهم بشكل خاص عند العمل مع عمليات حساسة للإذن.
المزالق الشائعة وأفضل الممارسات
المزالق:
- سوء استخدام
-it
أعلام: استخدام-it
مع الأوامر غير التفاعلية يمكن أن تسبب سلوك غير متوقع. - التنفيذ على حاويات متوقفة: لا يمكنك استخدام
docker exec
على الحاويات المخرجات أو الموقعة – سوف يرمي خطأ. - مربكة مع
docker run
: تذكر ذلكdocker run
يبدأ حاوية جديدة ، بينماdocker exec
يعمل داخل واحد موجود.
أفضل الممارسات:
- تحقق من حالة الحاوية أولاً: يستخدم
docker ps
للتأكد من تشغيل الحاوية. - استخدم أسماء الحاويات الوصفية: من الأسهل تذكر
web_server
من معرف حاوية عشوائي. - استخدام لتصحيح الأخطاء واستكشاف الأخطاء وإصلاحها: لا تعتمد على
docker exec
للتغييرات الدائمة. استخدم dockerfiles وأحجام التكوين على المدى الطويل.
Docker Exec vs Docker Attach vs Docker Run
إليك مقارنة سريعة لمساعدتك في فهم الاختلافات:
يأمر | استخدام الحالة | سلوك |
---|---|---|
docker run |
قم بتشغيل أمر جديد في حاوية جديدة | يخلق ويبدأ حاوية جديدة |
docker exec |
قم بتشغيل أمر في حاوية قيد التشغيل بالفعل | ينفذ في حاوية حية ، لا إعادة التشغيل |
docker attach |
الاتصال بالعملية الرئيسية للحاوية | يشارك stdin/stdout ، ليست مثالية لجميع المهام |
متى تستخدم ماذا:
- يستخدم
docker exec
للمهام المعزولة مثل تشغيل أوامر Shell أو خدمات إعادة التشغيل. - يستخدم
docker attach
فقط عندما تريد مراقبة أو التفاعل مع عملية الحاوية الرئيسية. - يستخدم
docker run
لبدء حاويات جديدة ، وليس للحاويات الموجودة.
خاتمة
ال docker exec
يعد الأمر أداة مهمة في مجموعة أدوات مطور أو DevOps Engineer. يسمح لك بالدخول والتفاعل مع الحاويات الحية بأمان وكفاءة – سواء كنت تصحيح المهام الإدارية أو تفتيشها أو تنفيذها. عن طريق إتقان docker exec
، يمكنك التحكم بشكل أفضل في بيئات الحاويات الخاصة بك دون اضطراب غير ضروري.
من إعادة تشغيل الخدمات إلى النظر إلى سجلات أو متغيرات البيئة ، docker exec
جسور الفجوة بين عزل الحاوية والتحكم العملي. مع استمرار العمل مع Docker ، اجعل هذا الأمر جزءًا من سير العمل العادي – إنه بسيط وقوي ولا غنى عنه.
تريد تعميق مهارات الالتصاق الخاصة بك؟ حاول الجمع docker exec
مع أدوات مثل docker inspect
و docker logs
و Docker يؤلف تجربة أكثر اكتمالا لإدارة الحاويات.