Am've următoarele imagini:
[email protected]:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 70c0e19168cf 5 days ago 1.069 GB
<none> <none> c2ce80b62174 8 days ago 399.2 MB
<none> <none> 60afe4036d97 8 days ago 325.1 MB
și când m-am încercați să scoateți unul dintre ele sunt:
[email protected]:~$ sudo docker rmi 60afe4036d97
Error: Conflict, 60afe4036d97 wasn't deleted
2014/01/28 00:54:00 Error: failed to remove one or more images
Cum le pot elimina? De ce există un astfel de conflict?
Pentru a șterge toate imaginile, utilizați dat comanda
docker rmi $(docker images -q)
În scopul de a șterge toate containerele, folosiți dat comanda
docker rm $(docker ps -a -q)
Avertisment: Acest lucru va distruge toate imaginile și containere. Acesta nu va fi posibil pentru a restabili-le!
Această soluție este prevăzută de Techoverflow.net.
Motiv: Motivul poate fi că această imagine este utilizat în prezent de un recipient de funcționare. În acest caz, puteți lista de funcționare containere, opri relevante container și apoi scoateți imagine:
docker ps
docker stop <containerid>
docker rm <containerid>
docker rmi <imageid>
Dacă pot găsi recipient de docker ps, puteți utiliza acest pentru a lista toate deja a ieșit containere și a le elimina.
docker ps -a | grep 60afe4036d97
docker rm <containerid>
Notă: Fii atent de a șterge toate iesit containere, la o dată în cazul în care utilizați Volumului-Doar pentru containere. Aceste rămână în "Ieșire" de stat, dar conține date utile.
Motivul pentru care eroarea este că, chiar dacă imaginea nu au avut nici o etichetă, există încă un container creat pe acea imagine care ar putea fi în ieșit
de stat. Deci, ai nevoie să vă asigurați că ați oprit și a șters toate containerele l-a creat pe acele imagini. Următoarea comandă vă ajută la eliminarea toate containerele care nu sunt difuzate:
docker rm `docker ps -aq --no-trunc --filter "status=exited"`
Acum, acest lucru elimină toate marionetă non-intermediar `
docker rmi `docker images --filter 'dangling=true' -q --no-trunc`
Notă: Pentru a întrerupe rularea containere:
docker opri docker ps-q`
Imaginea ar putea fi utilizate în prezent de către o funcționare container, deci, trebuie mai întâi să opriți și scoateți recipientul(e).
docker stop <container-name>
docker rm <container-id>
Atunci ai putea încerca ștergerea imaginii:
docker rmi <image-id>
Trebuie să fii sigur că această imagine nu - 't depinde de alte imagini (în caz contrar, trebuie să le ștergeți mai întâi).
Am avut un caz ciudat, în care am avut mai multe recipiente încă în viață (docker ps-o
a revenit nimic) dar nu am putut't de a gestiona pentru a șterge imaginea și a imaginii sale-dependență.
Pentru a rezolva aceste cazuri speciale ai putea vigoare imaginea îndepărtarea cu asta:
docker rmi -f <image-id>
Din Docker ver. 1.13.0 (ianuarie 2017) acolo's sistem de prune` comanda:
$ docker system prune --help
Usage: docker system prune [OPTIONS]
Remove unused data
Options:
-a, --all Remove all unused images not just dangling ones
-f, --force Do not prompt for confirmation
--help Print usage
În plus față de Soare's răspuns:
În scopul de a șterge toate imaginile pe un calculator cu Windows (cu Docker pentru Windows) într-o fereastră de PowerShell, face:
docker images -q | %{docker rmi -f $_}
În scopul de a șterge toate containerele pe un calculator cu Windows (cu Docker pentru Windows) într-o fereastră de PowerShell, face:
docker ps -a -q | %{docker rm -f $_}
Trebuie să-stop/șterge toate inutile containere l-a creat pe imagini în primul rând.
Avea o privire: https://stackoverflow.com/questions/17236796/how-to-remove-old-docker-io-containers.
După care folosesc @marcell soluție.
Scoateți toate containerele
docker ps -q -a | xargs docker rm
Forța de a elimina toate Docker imagini
docker rmi -f $(docker images -f dangling=true -q)
Pur și simplu puteți aadd `--vigoare la sfârșitul comenzii. Cum ar fi:
sudo docker rmi <docker_image_id> --force
Pentru a face mai inteligent puteți adăuga ca:
sudo docker stop $(docker ps | grep <your_container_name> | awk '{print $1}')
sudo docker rm $(docker ps | grep <your_container_name> | awk '{print $1}')
sudo docker rmi $(docker images | grep <your_image_name> | awk '{print $3}') --force
Aici, în docker ps
$1 este prima coloană, adică Docker container de IDENTITATE.
Și docker imagini` $3 este cea de-a treia coloană, adică Docker imagine de IDENTITATE.
Pentru a șterge un Docher de imagine trebuie să executați următoarea comandă:
$ docker rmi <docker_image_id>
Deci, pentru a șterge toate Docker imagini puteți executa următoarea comandă:
$ docker rmi $(docker images -q)
Acum, dacă doriți să ștergeți toate Docker imagini (inclusiv imagini, care sunt în uz), puteți adăuga steagul -f
, de exemplu:
$ docker rmi -f $(docker images -q)
Utilizarea
docker image prune -all
sau
docker image prune -a
Elimina toate marionetă imagini. Dacă -a
este specificat, se va elimina, de asemenea, toate imaginile nu se face referire prin orice container.
Notă: vi se solicită confirmarea, înainte de prune elimină orice, dar nu sunt afișate o listă de ceea ce va putea fi eliminat. În plus, docker imagine ls
nu are suport negativ de filtrare, astfel încât este dificil de a prezice ce imagini vor fi scoase.
După cum se menționează în Docker's documentație pentru prune.
Dacă doriți să automat/curăța periodic ieșit containere și elimina imagini și volume care nu't în utilizarea de către o funcționare recipient puteți descărca Docker imagine meltwater/docker-cleanup
.
Că modul în care don't nevoie pentru a merge curățați-l de mână.
Doar rula:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest
Acesta va rula la fiecare 30 de minute (sau oricât de mult l-ai setat folosind DELAY_TIME=1800 opțiune) și curăța ieșit containere și imagini.
Mai multe detalii: https://github.com/meltwater/docker-cleanup/blob/master/README.md
Am găsit o soluție cu Powershell script care va face pentru mine.
Script-ul la prima oprire toate containerele decât a elimina toate containerele și apoi scoateți-imagini, care sunt numite de către utilizator.
Uite aici http://www.devcode4.com/article/powershell-remove-docker-containers-and-images