Używam Dockera pod Vagrant pod OS X 10.8.4 (Mountain Lion) i za każdym razem, gdy próbuję usunąć zapisany obraz, pojawia się błąd:
$ docker rmi some-image-id
2013/07/15 hh:mm:ss unexpected JSON input
Według rmi
pomocy poprawna składnia jest docker rmi IMAGE [IMAGE...]
i nie jestem pewien, co z tym zrobić.
Jak mogę usunąć obraz?
$ docker version
Client version: 0.4.8
Server version: 0.4.8
Go version: go1.1
$docker info
Containers: 1
Images: 3
Co ciekawe, kiedy biegnę docker ps
, w ogóle nie pojawiają się żadne pojemniki. Uruchomienie docker images
pokazuje cztery (4) base
obrazy i jeden (1) node
obraz.
docker info
pokazuje rzeczywistą liczbę obrazów, możesz spróbować./docker images -a -q | sort | uniq | wc -l
, powinien to być ten sam wynik (-a dla wszystkich obrazów, -q tylko dla identyfikatorów).docker ps
pokazuje tylko aktywne kontenery, możesz zrobić,docker ps -a
aby wyświetlić listę wszystkich kontenerów-D
opcją i klientem?docker -d -D& ; docker -D rmi <id>
. Możesz też spróbowaćCID=$(docker run -d ubuntu bash); ID=$(docker commit $CID); docker rmi $ID
?Odpowiedzi:
Spróbować
docker rmi node
. To powinno działać.Wyświetlanie wszystkich utworzonych kontenerów jest tak proste, jak
docker ps -a
.Aby usunąć wszystkie istniejące kontenery (nie obrazy!) Uruchom
docker rm $(docker ps -aq)
źródło
docker ps -aq | Foreach-Object { docker stop $_; docker rm $_; }
Poniżej przedstawiono niektóre sposoby usuwania obrazów dokerów / kontenerów:
Usuń pojedynczy obraz
Usuń wszystkie obrazy
Zabij pojemniki i usuń je:
Uwaga: Zamień na
kill
zstop
dla płynnego wyłączeniaUsuń wszystkie obrazy oprócz „my-image”
Użyj grep, aby usunąć wszystko oprócz
my-image
iubuntu
Lub (bez awk)
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
źródło
docker rmi $(docker images -qf "dangling=true")
docker rm $(docker kill $(docker ps -a -q))
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
Usuń wszystkie kontenery dokerów
Usuń wszystkie obrazy dokerów
źródło
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
sudo docker rmi -f $(sudo docker images | grep "<none>" | awk "{print \$3}")
a następnie w celu usunięcia tagów wydań na żywo z 2015 roku (np.live-20150121223
) możemy zrobićsudo docker rmi -f $(sudo docker images | grep live-2015 | awk "{print \$3}")
Aby usunąć obraz z Dockera za pomocą identyfikatora obrazu:
Uzyskaj listę wszystkich zdjęć
Wskaż identyfikator obrazu, który chcesz usunąć, na przykład:
Na koniec usuń obraz za pomocą identyfikatora obrazu (wymagane są tylko pierwsze trzy cyfry)
źródło
Wizerunek:
Pojemnik:
źródło
Zaktualizuj, zgodnie z komentarzem VonC w Jak usunąć stare kontenery Docker .
Dzięki Docker 1.13 (IV kwartał 2016 r.) Masz teraz:
docker system prune
usunie WSZYSTKIE nieużywane dane (tj. w kolejności: pojemniki zatrzymane, woluminy bez pojemników i obrazy bez pojemników).Zobacz PR 26108 i zatwierdź 86de7c0 , które wprowadzają kilka nowych poleceń, aby ułatwić wizualizację ilości miejsca, jaką dane demona Docker zajmuje na dysku i pozwalając na łatwe usunięcie „niepotrzebnego” nadmiaru.
źródło
Usuwanie pojemników
Aby usunąć określony pojemnik
Dla pojedynczego obrazu
Dla wielu zdjęć
Usuń opuszczone pojemniki
Usuń wszystkie pojemniki
Usuwanie obrazów
Usuń określone obrazy
dla pojedynczego obrazu
dla wielu zdjęć
Usuń zwisające obrazy
Zwisające obrazy to warstwy, które nie mają związku z żadnymi oznaczonymi obrazami, ponieważ obrazy Docker składają się z wielu obrazów.
Usuń wszystkie obrazy Dockera
Usuwanie woluminów
Aby wyświetlić listę woluminów, uruchom
docker volume ls
Usuń określony wolumin
Usuń wiszące woluminy
Usuń pojemnik i jego objętości
źródło
CONTAINER_ID
?docker rm container_name
docker rmi image_name
źródło
Znajdź identyfikator kontenera,
źródło
daf644660736
? Jak to się ma do któregokolwiek z poprzednich?Przede wszystkim musimy zatrzymać i usunąć pojemniki Docker, które są dołączone do obrazu Docker, który zamierzamy usunąć.
Po pierwsze
docker stop container-id
- Aby zatrzymać działający pojemnikdocker rm container-id
- Aby usunąć / usunąć pojemniknastępnie,
docker rmi image-id
- Aby usunąć / usunąć obrazźródło
Dla wersji 1.13 i wyższych:
Porównywanie:
docker image rm
idocker rmi
,[OPTIONS]
wydają się nie mieć znaczenia.Od: Przedstawiamy Docker 1.13
źródło
Docker udostępnia polecenia do usunięcia
images
.Przykład:
Możesz więc usunąć takie obrazy filtrów:
źródło
Usuń je wszystkie za pomocą
Krok 1: Zabij wszystkie pojemniki
Krok 2: RM je najpierw
Krok 3: Usuń obrazy przy użyciu siły
Wykonaj krok 1 w przypadku wystąpienia błędu informującego, że nie można go usunąć z powodu zależności potomnych
źródło
Jeśli chcesz automatycznie / okresowo czyścić opuszczone kontenery i usuwać obrazy i woluminy, które nie są używane przez działający kontener, możesz pobrać obraz
meltwater/docker-cleanup
.Używam tego w produkcji, ponieważ wdrażamy kilka razy dziennie na wielu serwerach i nie chcę chodzić na każdy serwer, aby wyczyścić (to byłoby uciążliwe).
Po prostu biegnij:
Będzie działał co 30 minut (lub jak długo ustawisz go za pomocą opcji DELAY_TIME = 1800) i usunie opuszczone pojemniki i obrazy.
Więcej informacji: https://github.com/meltwater/docker-cleanup/blob/master/README.md
źródło
Oto skrypt powłoki, aby usunąć oznaczony (nazwany) obraz i jego kontenery. Zapisz jako docker-rmi i uruchom używając „docker-rmi my-image-name”
źródło
xargs -r
sprawić, by działał w niepasującym pojemniku.Dlaczego nikt nie wspomniał
docker-compose
! Właśnie używam go przez tydzień i nie mogę bez niego przeżyć. Wszystko, czego potrzebujesz, to napisać tekst, który zajmuje tylko kilka minut nauki, a następnie jesteś gotowy do pracy. Może uruchamiać obrazy, kontenery (które są potrzebne w tak zwanych usługach) i umożliwia przeglądanie dzienników, tak jak w przypadku natywnych poleceń dokera. Spróbuj:Zanim skorzystałem z komponowania dokera, napisałem własny skrypt powłoki, a następnie musiałem go dostosowywać, gdy zajdzie taka potrzeba, szczególnie przy zmianie architektury aplikacji. Teraz nie muszę już tego robić, dzięki docker-compose.
źródło
docker-compose
to narzędzie do aranżacji i często niepraktyczne do użycia w prostych projektach. W kontekście tego pytania preferowane jest samodzielnedocker
rozwiązanie (niewymagające użycia często drobnychdocker-compose.yml
konfiguracji). Ponadto istnieje już wiele dobrych odpowiedzi.Dla mnie następujące działało dobrze:
Następnie usuń obraz, uruchamiając kilka takich:
źródło
Lista zdjęć:
Usuń obrazy:
Usuń siłą:
źródło
W moim przypadku problem polega na tym, że mam zdjęcia holownicze o tej samej nazwie, rozwiązaniem jest dodanie znacznika po nazwie lub identyfikatorze
dawny:
źródło