הקדמה
Docker עושה את הדבר הרבה יותר קל עבורך לארוז את היישומים והשירותים שלך בתוך קונטיינרים כך שתוכל להפעיל אותם בכל מקום. אולם, בעוד שאתה עובד עם Docker, זה גם קל לצבור מספר רב מידי של תמונות, קונטיינרים ונפחי נתונים בלתי משמשים שמבלבלים את הפלט ומצרפים מקום בדיסק.
Docker נותן לך את כל הכלים שאתה צריך כדי לנקות את המערכת שלך מהשורת פקודה. מדריך זה בסגנון גיליון המרמור מספק הפניה מהירה לפקודות שימושיות לשחרור שטח דיסק ולשמירה על המערכת שלך מאורגנת על ידי הסרת תמונות, קונטיינרים ונפחי נתונים בלתי משמשים.
איך להשתמש במדריך זה:
- מדריך זה בפורמט של גיליון המרמור עם קטעי קוד של שורת פקודה עצמאיים.
- קפוץ לאיזו מקטע שנראה לך רלוונטי למשימה שאתה מנסה להשלים.
הערה: תחבורת התחלואה של פקודה, פקודה $(פקודה)
, השמושה בפקודות זמינה ברוב הקליפים הפופולריים, כמו bash, zsh, ו־Windows Powershell.
אם אתה רוצה דרך קליק אחד לפרוס אפליקציה דוקר על שרת חי, תסתכל על פלטפורמת משרד התקשורת הדיגיטלית.
ניקוי כל התמונות הלא משמשות או המקושרות, המכורים, הנפחים והרשתות
דוקר מספק פקודה אחת שתן קרא לניקוי כל המשאבים – תמונות, מכונות, נפחים ורשתות – שהם מקושרים (לא מסומנים או קשורים למכונה):
כדי גם להסיר כל מכונות עצמו וכל התמונות לא משמשות (לא רק תמונות מקושרות), הוסף את ה-a
הדגל לפקודה:
הסרת תמונות Docker
הסרת תמונות ספציפיות אחת או יותר
לשלב את הפקודה docker images
עם הדגל -a
כדי לאתר את מזהה התמונות שברצונך להסיר. זה יראה לך כל תמונה, כולל שכבות תמונה ביניים. כשאתה מצאת את התמונות שאתה רוצה למחוק, אתה יכול להעביר את מזההם או תגם לdocker rmi
:
רשימה:
הסר:
הערה: הדגל -a
או --all
בפקודת docker images
מציג כל תמונות הדוקר, כולל שכבות ביניים שאינן מקושרות לתגים כלשהם. כברירת מחדל, docker images
מראה רק את התמונות עם לפחות תג אחד.עם זאת, ייתכן שיש כמה תמונות ללא תגים שעדיין גורמות לשימוש בחירום במקום במערכת. הדגל -a
יכול לעזור בזיהוי תמונות שניתן לטוס כדי לחסוך במקום על המדחס. כשמשתמשים עם הפקודה docker rmi
, הדגל -f
או --force
יכול גם לשמש כדי להסיר תמונות בלי תגים.
הסרת תמונות דוקר מקופלות
תמונות דוקר מורכבות ממספר שכבות. תמונות מקופלות הן שכבות שאין להן קשר לתמונות מתועדות כלשהן.הם כבר אינם משרתים מטרה ומשתמשים במקום על מדחס. ניתן לאתר אותם על ידי הוספת הדגל -f
עם ערך של dangling=true
לפקודת docker images
. כשאתה בטוח שאתה רוצה למחוק אותם, אתה יכול להשתמש בפקודת docker image prune
:
הערה: אם תבנה תמונה בלי לתייג אותה, התמונה תופיע ברשימת התמונות התלויות משום שאין להם קשר לתמונה מתוגה. אפשר למנוע את המצב הזה על ידי סימון בתג בעת הבנייה, וניתן גם להוסיף תג לתמונה אחרי הפקתה באמצעות הפקודה docker tag
.
רשימה:
הסרה:
מחיקת תמונות על פי תבנית
ניתן למצוא את כל התמונות שתואמות לתבנית באמצעות שילוב של docker images
ו־grep
. כאשר אתה מרוצה, ניתן למחוק אותן באמצעות awk
להעברת המזהים ל־docker rmi
. שים לב שכלי אלה לא מסופקים על ידי Docker ואינם זמינים בהכרח בכל המערכות:
רשימה:
הסרה:
הסר את כל התמונות
כל התמונות של Docker במערכת ניתן לרשום על ידי הוספת -a
לפקודת docker images
. לאחר שאתה בטוח שברצונך למחוק אותן כולן, תוכל להוסיף את הדגל -q
כדי להעביר את מזהה התמונה ל־docker rmi
:
רשימה:
הסר:
מסירת קונטיינרים
הסר קונטיינר אחד או יותר
השתמש בפקודת docker ps
עם הדגל -a
כדי לאתר את שם או מזהה הקונטיינרים שברצונך להסיר:
רשימה:
הסר:
הסר קונטיינר בעת היציאה ממנו
אם אתה יודע כשאתה יוצר תוכן שלא תרצה לשמור אותו כאשר אתה סיים, תוכל להריץ docker run --rm
כדי למחוק אותו אוטומטית כאשר הוא ייצא:
הרץ ומחק:
מחק את כל המיכלים שיצאו
ניתן לאתר מיכלים באמצעות docker ps -a
ולסנן אותם לפי מצבם: created
, restarting
, running
, paused
, או exited
. כדי לבדוק את רשימת המיכלים exited
, השתמש בדגל -f
כדי לסנן לפי מצב. כשאתה מאשר שאתה רוצה להסיר את המיכלים האלו, השתמש ב־-q
כדי להעביר את המזהים לפקודת docker rm
:
רשימה:
הסר:
הסר מיכלים באמצעות יותר מסנן אחד
מסנני Docker ניתן לשלב על ידי חזרה על דגל הסינון עם ערך נוסף. תוצאת זהו רשימת תופסים שעומדים באחד מהתנאים. לדוגמה, אם ברצונך למחוק את כל התופסים שמסומנים כ-נוצר
(מצב שעשוי להתרחש כאשר אתה מפעיל תופס עם פקודה שאינה תקפה) או יצא
, תוכל להשתמש בשני מסננים:
רשימה:
הסרה:
ניתן למצוא את כל התופסים שתואמים תבנית בשילוב של docker ps
ו-grep
. כאשר אתה מרוצה שיש לך את הרשימה שברצונך למחוק, תוכל להשתמש ב-awk
וב-xargs
כדי לספק את המזהה ל-docker rm
. שים לב שכלי אלה אינם מסופקים על ידי Docker ואינם זמינים בהכרח בכל המערכות:
רשימה:
הסרה:
עצור והסר את כל המיכלים
ניתן לבדוק את המיכלים במערכת שלך עם docker ps
. הוספת הדגל -a
תציג את כל המיכלים. כאשר אתה בטוח שברצונך למחוק אותם, תוכל להוסיף את הדגל -q
כדי לספק את המזהים לפקודות docker stop
ו־docker rm
:
רשימה:
הסרה:
מסירת נפחים
הסרת נפח אחד או יותר מספציפיים
השתמש בפקודת docker volume ls
כדי לאתר את שמות הנפח או הנפחים שברצונך למחוק. לאחר מכן תוכל להסיר נפח או יותר עם הפקודה docker volume rm
:
רשימה:
הסרה:
הסר כתוביות תלויות
מאחר והמטרה של הכתוביות היא להיות תלויות באופן עצמאי מהמיכלים, כאשר מיכל מסוים נמחק, כתובית לא נמחקת אוטומטית באותו הזמן. כאשר כתובית קיימת ואינה מחוברת עוד לאף מיכל, זה נקרא כתובית תלויה. כדי לאתר אותן ולאשר את המחיקה שלהן, תוכל להשתמש בפקודת docker volume ls
עם מסנן להגבלת התוצאות לכתוביות תלויות. כאשר אתה מרוצה מהרשימה, תוכל למחוק אותן כולן בעזרת docker volume prune
:
רשימה:
מחק:
מחק מיכל ואת כתוביותיו
אם יצרת כתובית שאינה מקובטת, ניתן למחוק אותה בו זמנית עם המיכל באמצעות הדגל -v
. שים לב כי זה עובד רק עם כתוביות לא מקובטות. כאשר המיכל נמחק בהצלחה, נצגת זהותו. שים לב כי אין התייחסות למחיקת הכתובית. אם היא אינה מקובטת, היא תמחק בשקט מהמערכת. אם היא מקובטת, היא תישאר במערכת בשקט.
מחק:
מסקנה
מדריך זה מכסה חלק מהפקודות הנפוצות המשמשות להסרת תמונות, תושבות ונפחים עם Docker. ישנן הרבה קומבינציות ודגלים נוספים שניתן להשתמש בהם עם כל פקודה. למדריך מקיף על מה שזמין, ראה את תיעוד ה-Docker עבור docker system prune
, docker rmi
, docker rm
, ו־docker volume rm
. אם ישנם משימות ניקוי נפוצות שתרצה לראות במדריך, נא לשאול או להציע הצעות בתגובות.
למבט מפורט על הרכיבים השונים של תושבת Docker, ראה אקוסיסטמה של Docker: מבוא לרכיבים נפוצים.
Source:
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes