تواجه مشكلة في إيقاف حاويات Docker؟ إيجاد الطريقة الصحيحة لإيقاف حاوية يصعب مع وجود القدرة على إنشاء العديد من الحاويات المختلفة. في هذا المقال، ستتعلم أوامر Docker لإيقاف حاوية أو جميع الحاويات.
تابع القراءة لمزيد من المعلومات!
المتطلبات
لمتابعة هذا البرنامج التعليمي، تأكد من أن لديك ما يلي:
- Windows 10 – يستخدم البرنامج التعليمي Windows لتشغيل Docker، ولكن يمكنك أيضًا تطبيق الخطوات العامة نفسها على Linux أو macOS.
- Docker Desktop – يستخدم هذا البرنامج التعليمي الإصدار 3.5.2. يتوفر محرك Docker إذا كنت تستخدم Linux حيث لا يتوفر الواجهة الرسومية.
- A running Docker container or containers.
إنهاء الحاويات باستخدام أمر إيقاف الحاويات docker stop
لنبدأ بالأمر الأول: أمر إيقاف الحاويات docker stop
وكيفية إيقاف الحاويات باستخدامه.
على سبيل المثال، ربما تحتاج إلى إيقاف حاوية تعمل بالاسم mystifying_hofstadter
وتحتوي على معرف fb66ed502096
. كما هو موضح في المثال أدناه، قم بإيقاف الحاوية باستخدام أمر docker stop
containers.

ماذا لو كان لديك العديد من الحاويات الجارية وترغب في إيقافها؟ يدعم أمر إيقاف الحاويات docker stop
إيقاف عدة هويات حاويات، واحدة في كل مرة.
أولاً، قم بإدراج جميع الحاويات عبر أمر docker ps
وقم بتمرير هويات الحاويات إلى أمر docker stop
كما هو موضح أدناه.

ماذا لو كنت ترغب في إيقاف جميع الحاويات الجارية دون استرجاع هويات الحاويات يدويًا وتمريرها إلى docker stop
? سينجز أمر docker ps -q
ذلك. يقوم المعامل -q
لأمر docker ps
بإخراج فقط هويات الحاويات.

البنية
$(docker ps -q)
أعلاه هي تعبير فرعي في كل من Bash على نظام Linux وPowerShell على نظام Windows. يُعلم الفرع الفرع القشرة بمعالجة مجموعة من الأوامر،docker ps -q
، أولاً ثم إرجاع مجموعة النتائج إلى الأمر الأصليdocker stop
.
أمر docker stop
containers يستخدم إشارة SIGTERM. تعلم الإشارات في Linux العملية بحدوث حدث، ولكن يتوقف الأمر على العملية لتقرر كيفية التصرف في إشارة معينة.
عند استخدام إشارة SIGTERM، يستخدم Docker الإشارة لإيقاف العملية بشكل متقن عن طريق الانتظار لمدة افتراضية 10
ثوانٍ قبل إرسال إشارة SIGKILL، التي تنهي العملية فورًا.
إيقاف حاوية باستخدام إشارات العملية
لقد تعلمت عن السلوك الافتراضي لـ Docker (إشارة الإيقاف)، باستخدام أمر docker stop
containers عند إيقاف حاوية. ولكن قد لا ترغب في السلوك الافتراضي. بدلاً من ذلك، يمكنك توجيه Docker لاستخدام إشارات إيقاف بديلة.
مع تحديد العلم --stop-signal
في أوامر docker run
، يمكنك تحديد إشارة الإيقاف عند بدء تشغيل الحاوية. يقوم هذا العلم بتعيين الإشارة التي سيتم إرسالها إلى الحاوية الجارية عندما ترغب في إيقافها.
في المثال أدناه، تأخذ العلمة --stop-signal
قيمة SIGQUIT
، مما يخبر Docker بإرسال إشارة SIGQUIT عندما يحين الوقت لإيقاف الحاوية. يستخدم المثال أيضًا المعلمات التالية:
d
– Runs the container in detached (background) mode. The detached mode will not allow the container to be immediately interacted with by the user since the process is running in the background.t
– allocates a Pseudo-TTY (PTY) console, which emulates a real terminal console in the container and stops the Ubuntu container from immediately exiting. The Ubuntu container in the example requires a PTY console to stay active in the background.- “اسم الصورة” – ما هي صورة Docker لإنشاء الحاوية منها، في هذه الحالة، صورة
ubuntu
.

SIGQUIT
as the signal when starting and then stopping a Docker container. يمكنك أيضًا تحديد إشارة الإيقاف باستخدام Dockerfile، الذي يخبر Docker كيفية بناء حاوية. يمكنك إضافة إدخال إلى Dockerfile يحدد إشارة الإيقاف باستخدام
STOPSIGNAL SIGQUIT
، على سبيل المثال. يمكنك تبديلSIGQUIT
مع أي إشارة إيقاف ترغب فيها.
الخروج الفوري من الحاويات باستخدام docker kill
سيكون هناك أوقات ترغب فيها في الخروج من الحاويات دون منحها فترة سماح. الأمر docker kill
يوقف الحاوية فورًا.
المثال أدناه يمرر الحاوية بالمعرف 2aa318273db5
إلى docker kill
. ستخرج الحاوية على الفور عبر إشارة SIGKILL. لن يسمح بخروج الحاوية بطريقة مهذبة. نتيجة للأمر، ستخرج الحاوية، وسيتم عرض معرف الحاوية.
قتل جميع الحاويات باستخدام الأمر
docker kill $(docker ps -q)
. لاحظ أن(docker ps -q
) هو تعبير فرعي هنا.
إيقاف وإزالة حاوية باستخدام docker rm
بشكل افتراضي، عند إنشاء حاوية، تُبنى تلك الحاوية بنفس الطريقة كما كانت من قبل: فهي تتمتع بالخواص الضرورية. إزالة الحاوية ستكون لها تأثير بسيط، وبذلك في الاعتبار، يمكن لأمر docker rm
أن يُجبر على إيقاف وإزالة الحاوية. تُرسل Docker إشارة SIGKILL
إلى العملية الرئيسية وتقوم بإزالة الحاوية من قائمة الحاويات المتاحة في تثبيت Docker الخاص بك.
إذا كانت الحاوية يجب أن تحتفظ بالملفات الداخلية المغيرة أو يجب الاحتفاظ بحالتها، فإن إزالة الحاوية ستدمر تلك التغييرات. احترس من الأخطاء المحتملة!
في المثال التالي، ربما قمت ببدء حاوية تم تعيين اسمها kind_galileo
. قبل إزالة الحاوية، يجب إيقاف الحاوية، كما هو موضح أدناه. يُعرض أمر docker ps -a
حالة Exited
لحاوية المثال.

الآن بعد أن تم إيقاف الحاوية، سيقوم أمر docker rm
بإزالة الحاوية بالكامل.
بدلاً من إيقاف الحاوية ثم إزالة الحاوية، فإن التركيبة المكونة من --force
و docker rm
ستقوم بإيقاف وإزالة الحاوية في عملية واحدة. بعد ذلك، لن تكون الحاوية بعنوان laughing_elion
متاحة للتشغيل.
إذا لم تقم بتحديد أمر
--force
، ستواجه رسالة خطأError response from daemon: You cannot remove a running container...

إيقاف حاويات Docker باستخدام Docker Compose
تُستخدم أوامر Docker عادةً على حاوية واحدة، لكن يمكنك إنشاء خدمة بعدة حاويات تعمل معًا بتناغم. يتيح لك أداة Docker Compose تكوين خدمة تتألف من عدة حاويات للعمل معًا.
بما أن الحاويات ضمن خدمة مصممة للعمل معًا، فمن الأفضل إيقاف الخدمة بأكملها بشكل منتظم بدلاً من أي حاوية فردية.
إذا كان لديك خدمة تعمل بعدة حاويات، [docker-compose stop]
يوقف الخدمة دون إزالة الحاويات أو الخدمة. تابع القراءة أدناه لإنشاء خدمة Docker Compose، وبدء الخدمة، وفي نهاية المطاف إيقاف الخدمة بشكل منتظم.
1. إنشاء دليل لتخزين ملف التكوين. في هذا المثال، سيخزن الدليل C:\Articles\Ubuntu الملف.
2. بعد ذلك، قم بإنشاء الملف docker-compose.yml، الذي يحتوي على التكوين التالي. ينشئ ملف Docker Compose أدناه خدمة بحاويتين Ubuntu، وعند تشغيلهما، لا تخرج الحاويات فورًا.
3. في جلسة تيرمنال، انتقل إلى دليل تكوين Docker المخصص الخاص بك، والذي في هذا المثال هو C:\Articles\Ubuntu. قم بتشغيل الأمر docker-compose up -d
لإنشاء وبدء الخدمة التي تم إنشاؤها في الخطوة السابقة في الخلفية كما هو موضح بالخيار -d
.

4. في نفس جلسة التيرمنال والدليل، قم بإصدار الأمر docker-compose stop
لإنهاء الخدمة والحاويات بسلاسة.

الأمر
docker-compose
، مثل الأمرdocker
، يحتوي أيضًا على المعلماتrm --force
وkill
. المعلماتdocker-compose
تعمل على الخدمة بدلاً من حاوية واحدة. يأخذ أمرdocker-compose kill
أيضًا خيار-s
لتحديد إشارة التوقف.
الختام
حاويات Docker هي أداة قوية لإنشاء بيئات فريدة ومقسمة للاستخدام في التطوير والإنتاج. في هذا المقال، تعلمت العديد من الطرق التي يتوقف بها Docker عن تشغيل حاويات واحدة أو أكثر، حتى الكل. كما تعلمت عن الإشارة الافتراضية التي يستخدمها Docker للتوقف وكيفية تغييرها.
بهذه المعرفة، أنت الآن تعرف كل جوانب التوقف عن تشغيل حاويات Docker وكيفية عدم الخطأ عندما يحين وقت إيقاف تشغيل الحاويات. كيف تخطط لإيقاف حاوياتك من الآن فصاعدًا، بعد امتلاكك هذه المعرفة الجديدة؟
Source:
https://adamtheautomator.com/docker-stop-containers/