قم بإزالة صور Docker ، والأحجام ، والحاويات في ثوانٍ

نشرت: 2023-03-03

Docker هي تقنية حاويات برمجية تساعد المطورين على إنشاء ونشر التطبيقات عبر منصات مختلفة تتراوح من سطح المكتب إلى السحابة.

تُعرف لقطة - أو مخطط - من التعليمات البرمجية المصدر والتبعيات والأدوات المطلوبة لإنشاء تطبيق داخل حاوية Docker بالصورة. يمكن أن تعتمد تطبيقات Docker التي تتطلب بيانات ثابتة على وحدات تخزين تسمى وحدات التخزين المستقلة عن نظام التشغيل الأساسي.

يعد التنظيم الفعال للصور والأحجام والحاويات أمرًا مهمًا عند استخدام Docker. يمكن أن تتراكم التجسيدات غير المستخدمة لهذه الأصول ، فتشغل مساحة كبيرة على القرص وتؤثر في النهاية على أداء النظام.

تستكشف هذه المقالة طرقًا مختلفة للحفاظ على تنظيم النظام من خلال مسح الصور (بشكل فردي وكل مرة) ، ووحدات التخزين والحاويات. وسنستخدم واجهة سطر أوامر docker (CLI) لإنجاز هذه المهام بسرعة.

كيفية إزالة صور Docker

تعد إزالة الصور القديمة أو غير الضرورية من Docker أمرًا ضروريًا للحفاظ على نظام نظيف ومنظم. لنلقِ نظرة على كيفية استهداف CLI لصور معينة لإزالتها.

أولاً ، لنلقِ نظرة على الصور الموجودة في بيئة Docker باستخدام الأمر docker image ls :

 $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 60 seconds ago 7.05MB <none> <none> 85b412789704 2 days ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB

كشفت صور القائمة أعلاه عن صور مسماة my_image و demo ، وكلاهما تم وضع علامة عليه مؤخرًا . الصورة الثالثة ليس لها اسم أو علامة. في هذه الحالة ، تكون الصورة "متدلية": صورة لا تستخدمها الحاوية حاليًا. نتجت هذه الصورة المتدلية عن إعادة بناء my_image (سيناريو شائع). لا يزال الإصدار السابق من الصورة على نظام الملفات ، ولكنه ليس قيد الاستخدام الآن.

تعرض القائمة أيضًا أول 12 حرفًا من معرف كل صورة المكون من 64 حرفًا وتواريخ الإنشاء ومساحة التخزين التي تستهلكها الصور.

قم بإزالة كافة الصور غير المستخدمة

في مثال القائمة أعلاه ، لدينا صورة متدلية. ومع ذلك ، من الممكن أن تكون الصورة التي ليس لها اسم أو علامة نشطة. على سبيل المثال ، ربما تم استخدامه لبدء حاوية عن طريق الرجوع إلى المعرف الخاص بها.

لحذف جميع الصور المتدلية بأمان ، يمكنك استخدام أمر docker image prune :

 $ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Deleted Images: deleted: sha256:85b412789704c17e9c5e7edc97b2f64c748bbdae7eaa44d3fe2cc21a87acad3d Total reclaimed space: 7.05MB

سنقوم بإدراج صورنا مرة أخرى لنرى نتائج عملنا:

 $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 70 seconds ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB

بعد عملية التقليم ، اختفت الصورة التي ليس لها اسم أو علامة.

لا تدع فوضى Docker تسيطر على نظامك! تعرف على كيفية مسح الصور والأحجام والحاويات بكفاءة باستخدام هذه الأوامر المفيدة. انقر للتغريد

إزالة صورة معينة بالاسم

يمكنك استهداف صورة للإزالة من خلال الرجوع إلى اسمها:

 $ docker image rm <image_name>

ملاحظة: لا يمكنك بسهولة إزالة الصور التي لا تزال قيد الاستخدام. يجب عليك إيقاف أو إزالة الحاويات قيد التشغيل التي تستخدم الصور. على الرغم من أنه لا يُنصح عادةً بذلك ، يمكنك فرض إزالة صورة نشطة باستخدام العلامة -f :

 $ docker image rm <image_name> -f

استخدام اختصار rmi لإزالة الصور

يحتوي Docker CLI على طريقة مختصرة لإزالة الصور في الاسم المستعار rmi . يبدو استخدامه لإزالة صورة بالاسم كما يلي:

 $ docker rmi demo Untagged: demo:latest Deleted: sha256:2cbc27836df4a7707e746e28368f1fdecfefbfb813aae06611ca6913116b80b4

سنستخدم rmi لأمثلة إزالة الصور التالية.

قم بإزالة كافة الصور غير المميزة

لا تزال الصور غير المميزة تشغل مساحة كبيرة على القرص ، مما يؤدي إلى إبطاء نظامك أكثر فأكثر بمرور الوقت.

لإزالة جميع الصور غير المميزة في Docker ، استخدم الأمر docker rmi مع مرشح. يمكنك توفير عوامل تصفية بناءً على معايير محددة باستخدام الخيار -f (يجب عدم الخلط بينه وبين العلامة -f المتاحة للصورة image rm لفرض إجراء).

يستخدم الفلتر dangling=true لتحديد الصور غير المميزة:

 $ docker rmi $(docker images -f "dangling=true" -q)

يعرض الخيار -q في الأمر أعلاه معرفات الصور لجميع الصور غير المميزة. يتم بعد ذلك تمرير كل هذه المعرفات كوسيطات إلى docker rmi لإزالتها.

يستخدم هذا الفلتر الكلمة الأساسية "المتدلية" ، ولكن كما هو مذكور أعلاه ، قد تكون بعض الصور التي لا تحتوي على علامات نشطة بالفعل. سيتم تحذيرك إذا كانت الصورة المحددة بواسطة هذا المرشح لا تتدلى حقًا.

إزالة صورة معينة عن طريق المعرف

يمكنك استخدام الأمر docker rmi لإزالة أي صورة معينة بالرجوع إلى المعرف الخاص بها:

 $ docker rmi <image_id>

إزالة صورة معينة بالاسم والعلامة

يمكنك حذف صورة معينة مع اسمها وعلامتها باستخدام الأمر docker rmi .

على سبيل المثال ، إذا كان لديك عدة صور بنفس الاسم ولكن بعلامات مختلفة ، فيمكنك حذف صورة معينة باستخدام هذا التنسيق:

 $ docker rmi <image_name>:<tag>

هذه الطريقة مفيدة عندما تريد حذف إصدار معين من الصورة بدلاً من حذف جميع الصور المتعلقة بالمستودع.

قم بإزالة جميع الصور باستخدام أحدث علامة

في Docker ، تشير العلامة "الأحدث" إلى أحدث إصدار من صورة Docker معينة. غالبًا ما يتم استخدام أحدث علامة كعلامة افتراضية لصور Docker. يتم تعيينه تلقائيًا إلى أحدث بنية للصورة ما لم يتم تحديد علامة أخرى بشكل صريح.

يوفر Docker أمرًا لإزالة جميع الصور ذات العلامة "الأحدث":

 $ docker rmi $(docker images | grep "latest" | awk '{print $3}')

الأمر أعلاه مقسم إلى جزأين. أولاً يحصل على قائمة معرفات الصور ، ثم يمرر هذه القائمة كوسيطة لأمر docker rmi .

إزالة الصور من مستودع بعيد

لإزالة صورة من مستودع بعيد ، مثل Docker Hub ، ستحتاج أولاً إلى تسجيل الدخول إلى الحساب باستخدام Docker CLI.

بمجرد تسجيل الدخول ، تحتاج فقط إلى استخدام الأمر docker rmi لإزالة الصورة. يمكن لأمر docker rmi إزالة كل من الصور المحلية والبعيدة:

 docker rmi my_repo/my_image_tag

والجدير بالذكر أنه يمكنك فقط إزالة الصور التي تم دفعها إلى المستودع. وبالمثل ، لا يمكنك إزالة الصور المستخدمة بواسطة تشغيل الحاويات.

إزالة صور متعددة من مستودع بعيد

لإزالة صور متعددة من مستودع بعيد ، يمكنك استخدام الأمر docker rmi متبوعًا بمعرفات أو علامات الصورة. على سبيل المثال:

 docker rmi my_repo/image_tag_1 my_repo/image_tag_2 my_repo/image_tag_3

سيؤدي هذا إلى إزالة الصور الثلاث ذات العلامات image_tag_1 و image_tag_2 و image_tag_3 من المستودع my_repo .

كيفية إزالة وحدات التخزين Docker

يمكن أن تشغل وحدات تخزين Docker مساحة كبيرة على القرص ، خاصةً إذا كانت تحتوي على كميات كبيرة من البيانات أو نسخ احتياطية متعددة. من خلال إزالة وحدات التخزين التي لم تعد هناك حاجة إليها ، فإنك تقلل من مخاطر انتهاكات البيانات وتضمن عدم وصول المستخدمين غير المصرح لهم إلى البيانات الحساسة. يمكن أن تؤدي إزالة وحدات التخزين بشكل منتظم إلى الحفاظ على بيئة Docker محدثة ومنع المشكلات التي تسببها البيانات القديمة.

تدمر هذه الأوامر جميع البيانات المخزنة في مجلد بشكل دائم ، لذا استخدمها بحذر.

قم بإزالة كافة الأحجام غير المستخدمة

في Docker ، تعد إزالة وحدات التخزين غير المستخدمة أمرًا بالغ الأهمية مثل إزالة الصور أو الحاويات.

لتفريغ مساحة تخزين القرص ، يمكنك استخدام أمر docker volume prune .

إزالة وحدة تخزين محددة بالاسم

تعد إزالة وحدة تخزين معينة في Docker مفيدة لإزالة وحدات التخزين غير المستخدمة. إليك أمر إزالة وحدة تخزين:

 docker volume rm my_volume_name

باستخدام الأمر أعلاه ، ستتم إزالة وحدة التخزين my_volume_name . ينتج عن Docker خطأ إذا حاولت إزالة وحدة تخزين مستعملة. يمكنك التحقق من وحدات التخزين المتاحة باستخدام الأمر docker volume ls .

كيفية إزالة حاويات Docker

أثناء عملك أكثر مع Docker ، قد تتراكم العديد من الحاويات غير المستخدمة والتي تشغل موارد القرص. إذا لم تقم بحذفها ، فيمكن أن تتراكم بمرور الوقت وتستهلك موارد قرصية قيمة ، مما يؤدي إلى إبطاء نظامك وربما يعرضك للخطر.

قم بإزالة جميع الحاويات المتوقفة

يمكن لأمر docker container prune أن تحذف جميع الحاويات المتوقفة في Docker. هنا ، يقوم الأمر بإنشاء قائمة بجميع الحاويات المتوقفة التي ستتم إزالتها ويطلب التأكيد قبل المتابعة. يساعد هذا في استعادة مساحة القرص والحفاظ على بيئة Docker نظيفة ومنظمة مع السماح لك بالتحقق مرة أخرى من عدم فقد أي شيء مهم:

 $ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 4df4c47c4df4 d35bcec20bce

لاحظ أنه يمكن إزالة الحاويات المتوقفة فقط باستخدام هذا الأمر. إذا كنت بحاجة إلى إزالة الحاويات قيد التشغيل ، فستحتاج إلى إيقافها أولاً أو استخدام أمر مختلف.

قم بإزالة حاوية محددة بواسطة المعرف

في Docker ، يمكنك إزالة حاوية معينة عن طريق المعرف باستخدام docker rm command جنبًا إلى جنب مع معرف الحاوية. أولاً ، احصل على معرف الحاوية بالكامل باستخدام docker ps command :

 $ docker ps -a -q 1ce3cdeb4035 06b79541e25c fa98f1804e3e $ docker rm 1ce3cdeb4035

يعمل الأمر أعلاه فقط إذا كانت الحاوية في حالة توقف. إذا كانت الحاوية قيد التشغيل ، فأنت بحاجة إلى إزالتها بقوة باستخدام العلامة -f:

 $ docker rm -f 1ce3cdeb4035

قم بإزالة حاوية محددة بالاسم

يوفر Docker أمر docker rm متعدد الأغراض لإزالة كل من الحاويات بالاسم والمعرف.

على سبيل المثال ، إذا كانت لديك حاوية باسم web_server ، فيمكنك إزالتها باستخدام الأمر التالي:

 $ docker rm web_server

أولاً ، من المهم إيقاف الحاوية. يوفر Docker أمر docker stop لإيقاف حاوية معينة.

قم بإزالة جميع الحاويات الجارية

لحذف جميع الحاويات قيد التشغيل ، يمكنك استخدام الأمر docker rm :

 $ docker rm $(docker ps -q)

يسرد استخدام docker ps -q معرفات الحاويات قيد التشغيل. بعد ذلك ، يتم تمرير المعرفات إلى أمر docker rm ، الذي يزيل جميع الحاويات.

لاحظ أن هذا الأمر سيزيل فقط الحاويات قيد التشغيل. إذا كنت تريد إزالة جميع الحاويات ، بما في ذلك الحاويات الموقوفة ، فيمكنك استخدام الأمر التالي بدلاً من ذلك:

 $ docker rm $(docker ps -a -q)
إذا كنت تبحث عن تحسين نظام Docker الخاص بك ، فإن إزالة الصور والأحجام والحاويات غير الضرورية يعد مكانًا رائعًا للبدء! انقر للتغريد

ملخص

توضح هذه المقالة كيفية إزالة صور Docker ومجلداتها وحاوياتها. لقد تعلمت طرقًا مختلفة للحفاظ على نظام نظيف ومنظم. غطت أوامر لإزالة جميع الصور غير المستخدمة أو غير المميزة أو المحددة حسب المعرف أو الاسم. لقد تعلمت أيضًا أوامر لحذف جميع الحاويات المتوقفة أو حاوية معينة حسب المعرف أو الاسم.

تعد إزالة صور Docker ووحدات التخزين والحاويات عملية مباشرة يمكن أن تساعدك في إدارة المكونات غير المستخدمة واستعادة مساحة القرص القيمة وتحسين أداء النظام في كثير من الأحيان.

هذه البساطة هي التي تجذب المطورين إلى Docker ، ولا توجد طريقة أبسط لنشر تطبيق تم تطويره في Docker مقارنة بمنصة Kinsta Application Hosting. يمكنك تجربتها مجانا الآن.