Eliminați imaginile, volumele și containerele Docker în câteva secunde
Publicat: 2023-03-03Docker este o tehnologie de containerizare software care îi ajută pe dezvoltatori să creeze și să implementeze aplicații pe platforme disparate, de la desktop la cloud.
Un instantaneu - sau un plan - al codului sursă, dependențelor și instrumentelor necesare pentru a construi o aplicație într-un container Docker este cunoscut sub numele de imagine. Aplicațiile Docker care necesită date persistente se pot baza pe stocare numite volume care sunt independente de sistemul de operare subiacent.
Organizarea eficientă a imaginilor, volumelor și containerelor este importantă atunci când utilizați Docker. Încarnările neutilizate ale acestor active se pot acumula, ocupând spațiu valoros pe disc și, în cele din urmă, afectând performanța sistemului.
Acest articol explorează diferite moduri de a menține organizarea sistemului prin ștergerea imaginilor (atât individual, cât și simultan), a volumelor și a containerelor. Și vom folosi interfața de linie de comandă (CLI) docker
pentru a finaliza rapid aceste sarcini.
Cum să eliminați imaginile Docker
Eliminarea imaginilor învechite sau inutile din Docker este esențială pentru menținerea unui sistem curat și organizat. Să ne uităm la modul în care CLI poate viza anumite imagini pentru eliminare.
Mai întâi, să ne uităm la imaginile dintr-un mediu Docker cu comanda 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
Listarea imaginilor de mai sus a dezvăluit imagini numite my_image și demo , ambele etichetate cel mai recent . O a treia imagine nu are nume sau etichetă. În acest caz, este o imagine „atârnând”: una care nu este utilizată în prezent de un container. Această imagine suspendată a rezultat dintr-o reconstrucție a my_image (un scenariu comun). Versiunea anterioară a imaginii este încă în sistemul de fișiere, dar nu este acum utilizată.
Lista afișează, de asemenea, primele 12 caractere din ID-ul de 64 de caractere al fiecărei imagini, datele de creare și spațiul de stocare pe care îl ocupă imaginile.
Eliminați toate imaginile neutilizate
În exemplul de listare de mai sus, avem o imagine atârnată. Cu toate acestea, este posibil ca o imagine fără nume sau etichetă să fie activă. De exemplu, ar fi putut fi folosit pentru a porni un container prin referirea la ID-ul acestuia.
Pentru a șterge în siguranță toate imaginile care sunt cu adevărat suspendate, puteți folosi comanda 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
Vom lista din nou imaginile noastre pentru a vedea rezultatele muncii noastre:
$ 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
După procesul de tăiere, imaginea fără nume sau etichetă a dispărut.
Eliminați o anumită imagine după nume
Puteți viza o imagine pentru eliminare făcând referire la numele acesteia:
$ docker image rm <image_name>
Notă: nu puteți elimina cu ușurință imaginile încă în uz. Ar trebui să opriți sau să eliminați containerele care rulează care folosesc imaginile. Deși de obicei nu este recomandat, puteți forța eliminarea unei imagini active folosind steag-ul -f
:
$ docker image rm <image_name> -f
Utilizarea prescurtației rmi pentru eliminarea imaginilor
Docker CLI are o abordare scurtă pentru eliminarea imaginilor din alias rmi
. Folosirea acesteia pentru a elimina o imagine după nume arată astfel:
$ docker rmi demo Untagged: demo:latest Deleted: sha256:2cbc27836df4a7707e746e28368f1fdecfefbfb813aae06611ca6913116b80b4
Vom folosi rmi
pentru următoarele exemple de eliminare a imaginii.
Eliminați toate imaginile neetichetate
Imaginile neetichetate încă ocupă spațiu valoros pe disc, ceea ce încetinește sistemul dvs. din ce în ce mai mult în timp.
Pentru a elimina toate imaginile neetichetate din Docker, utilizați comanda docker rmi
cu un filtru. Puteți furniza filtre pe baza unor criterii specifice utilizând opțiunea -f
(a nu fi confundată cu marcajul -f
disponibil pentru image rm
pentru a forța o acțiune).
Filtrul dangling=true
este folosit pentru a identifica imaginile neetichetate:
$ docker rmi $(docker images -f "dangling=true" -q)
Opțiunea -q
din comanda de mai sus afișează ID-urile imaginii tuturor imaginilor neetichetate. Toate aceste ID-uri sunt apoi transmise ca argumente către docker rmi
pentru a le elimina.
Acest filtru folosește cuvântul cheie „atârnând”, dar, după cum s-a menționat mai sus, unele imagini fără etichete ar putea fi de fapt active. Veți fi avertizat dacă o imagine selectată de acest filtru nu este cu adevărat suspendată.
Eliminați o anumită imagine după ID
Puteți folosi comanda docker rmi
pentru a elimina orice imagine specifică, făcând referire la ID-ul acesteia:
$ docker rmi <image_id>
Eliminați o anumită imagine după nume și etichetă
Puteți șterge o anumită imagine împreună cu numele și eticheta acesteia folosind comanda docker rmi
.
De exemplu, dacă aveți mai multe imagini cu același nume, dar etichete diferite, puteți șterge una anume folosind acest format:
$ docker rmi <image_name>:<tag>
Această metodă este utilă atunci când doriți să ștergeți o anumită versiune a unei imagini în loc să ștergeți toate imaginile legate de un depozit.
Eliminați toate imaginile cu cea mai recentă etichetă
În Docker, eticheta „cea mai recentă” se referă la cea mai recentă versiune a unei anumite imagini Docker. Cea mai recentă etichetă este adesea folosită ca etichetă implicită pentru imaginile Docker. Este atribuit automat celei mai recente versiuni a unei imagini, cu excepția cazului în care este specificată în mod explicit o altă etichetă.
Docker oferă o comandă pentru a elimina toate imaginile cu eticheta „ultima”:
$ docker rmi $(docker images | grep "latest" | awk '{print $3}')
Comanda de mai sus este împărțită în 2 părți. Mai întâi primește lista de ID-uri de imagine, apoi transmite această listă ca argument la comanda docker rmi
.
Eliminați imagini dintr-un depozit de la distanță
Pentru a elimina o imagine dintr-un depozit de la distanță, cum ar fi Docker Hub, va trebui mai întâi să vă conectați la cont folosind Docker CLI.
Odată ce v-ați autentificat, trebuie doar să utilizați comanda docker rmi
pentru a elimina imaginea. Comanda docker rmi
poate elimina atât imaginile locale, cât și cele de la distanță:
docker rmi my_repo/my_image_tag
În special, puteți elimina doar imaginile care au fost trimise în depozit. De asemenea, nu puteți elimina imaginile utilizate de rularea containerelor.
Eliminați mai multe imagini dintr-un depozit de la distanță
Pentru a elimina mai multe imagini dintr-un depozit de la distanță, puteți utiliza comanda docker rmi
urmată de ID-urile sau etichetele imaginii. De exemplu:
docker rmi my_repo/image_tag_1 my_repo/image_tag_2 my_repo/image_tag_3
Aceasta va elimina cele trei imagini cu etichetele image_tag_1
, image_tag_2
și image_tag_3
din depozitul my_repo
.
Cum să eliminați volumele Docker
Volumele Docker pot ocupa mult spațiu pe disc, mai ales dacă conțin cantități mari de date sau copii de rezervă multiple. Prin eliminarea volumelor care nu mai sunt necesare, reduceți riscul încălcării datelor și vă asigurați că datele sensibile nu sunt accesibile utilizatorilor neautorizați. Eliminarea regulată a volumelor poate menține actualizat mediul Docker și poate preveni problemele cauzate de datele învechite.
Aceste comenzi distrug definitiv toate datele stocate într-un volum, așa că folosiți-le cu prudență.
Eliminați toate volumele neutilizate
În Docker, eliminarea volumelor neutilizate este la fel de critică ca și eliminarea imaginilor sau a containerelor.
Pentru a elibera spațiu de stocare pe disc, puteți utiliza comanda docker volume prune
.
Eliminați un anumit volum după nume
Eliminarea unui anumit volum din Docker este utilă pentru eliminarea volumelor neutilizate. Iată comanda pentru a elimina un volum:
docker volume rm my_volume_name
Cu comanda de mai sus, volumul my_volume_name va fi eliminat. Docker produce o eroare dacă încercați să eliminați un volum folosit. Puteți verifica volumele disponibile folosind comanda docker volume ls
.
Cum să eliminați containerele Docker
Pe măsură ce lucrați mai mult cu Docker, este posibil să acumulați multe containere neutilizate care ocupă resursele de disc. Dacă nu le ștergeți, acestea se pot acumula de-a lungul timpului și pot ocupa resurse valoroase de disc, încetinind sistemul și vă pot pune în pericol.
Îndepărtați toate containerele oprite
Comanda docker container prune
poate șterge toate containerele oprite din Docker. Aici, comanda creează o listă a tuturor containerelor oprite care vor fi eliminate și solicită confirmarea înainte de a continua. Acest lucru ajută la recuperarea spațiului pe disc și la menținerea unui mediu Docker curat și organizat, permițându-vă în același timp să verificați din nou că nu pierdeți nimic important:
$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 4df4c47c4df4 d35bcec20bce
Rețineți că numai containerele oprite pot fi îndepărtate cu această comandă. Dacă trebuie să eliminați containerele care rulează, va trebui să le opriți mai întâi sau să utilizați o comandă diferită.
Eliminați un anumit container după ID
În Docker, puteți elimina un anumit container după ID folosind docker rm command
împreună cu ID-ul containerului. Mai întâi, obțineți tot ID-ul containerului folosind docker ps command
:
$ docker ps -a -q 1ce3cdeb4035 06b79541e25c fa98f1804e3e $ docker rm 1ce3cdeb4035
Comanda de mai sus funcționează numai dacă containerul este în stare oprită. Dacă containerul rulează, atunci trebuie să îl eliminați cu forța folosind steag-ul -f:
$ docker rm -f 1ce3cdeb4035
Eliminați un anumit container după nume
Docker oferă o comandă docker rm
cu scopuri multiple pentru a elimina ambele containere după nume și după ID.
De exemplu, dacă aveți un container numit web_server , îl puteți elimina folosind următoarea comandă:
$ docker rm web_server
În primul rând, este important să opriți recipientul. Docker oferă comanda docker stop
pentru a opri un anumit container.
Eliminați toate containerele care rulează
Pentru a șterge toate containerele care rulează, puteți utiliza comanda docker rm
:
$ docker rm $(docker ps -q)
Folosind docker ps -q
listează ID-urile containerelor care rulează. După aceea, ID-urile sunt transmise comenzii docker rm
, care elimină toate containerele.
Rețineți că această comandă va elimina numai containerele care rulează. Dacă doriți să eliminați toate containerele, inclusiv pe cele oprite, puteți utiliza următoarea comandă:
$ docker rm $(docker ps -a -q)
rezumat
Acest articol a explicat cum să eliminați imaginile, volumele și containerele Docker. Ați învățat diverse metode pentru a menține un sistem curat și organizat. Acoperă comenzi pentru a elimina toate imaginile neutilizate, neetichetate sau specifice după ID sau nume. De asemenea, ați învățat comenzi pentru a șterge toate containerele oprite sau un anumit container după ID sau nume.
Eliminarea imaginilor, volumelor și containerelor Docker este un proces simplu, care vă poate ajuta să gestionați componentele neutilizate, recuperând spațiu pe disc valoros și, adesea, îmbunătățind performanța sistemului.
Această simplitate este cea care atrage dezvoltatorii către Docker și nu există o modalitate mai simplă de a implementa o aplicație dezvoltată în Docker decât cu platforma de găzduire a aplicațiilor Kinsta. Îl poți încerca gratuit acum.