Android

Jak usunąć kontenery dokowane, obrazy, woluminy i sieci

Czym jest DOCKER i jak powstaje KONTENER? [wersja dla laika] [Szkoła Dockera]

Czym jest DOCKER i jak powstaje KONTENER? [wersja dla laika] [Szkoła Dockera]

Spisu treści:

Anonim

Docker umożliwia szybkie budowanie, testowanie i wdrażanie aplikacji jako przenośnych, samowystarczalnych kontenerów, które można uruchomić praktycznie w dowolnym miejscu.

Docker nie usuwa nieużywanych obiektów, takich jak kontenery, obrazy, woluminy i sieci, chyba że zostanie to wyraźnie zaznaczone. Pracując z Dockerem, możesz łatwo zgromadzić dużą liczbę nieużywanych obiektów, które zajmują znaczne miejsce na dysku i zaśmiecają dane wyjściowe generowane przez polecenia Docker.

Ten przewodnik służy jako „ściągawka”, aby pomóc użytkownikom Docker utrzymać porządek w systemie i zwolnić miejsce na dysku, usuwając nieużywane kontenery, obrazy, woluminy i sieci.

Usuwanie wszystkich nieużywanych obiektów

Polecenie docker system prune usunie wszystkie zatrzymane kontenery, wszystkie wiszące obrazy i wszystkie nieużywane sieci:

docker system prune

Zostaniesz poproszony o kontynuowanie, użyj flagi -f lub --force aby ominąć monit.

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache Are you sure you want to continue?

docker system prune --volumes

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all volumes not used by at least one container - all dangling images - all build cache Are you sure you want to continue? y

Usuwanie pojemników Docker

Kontenery --rm nie są automatycznie usuwane po ich zatrzymaniu, chyba że kontener zostanie uruchomiony za pomocą flagi --rm .

Usuń jeden lub więcej pojemników

Aby usunąć jeden lub więcej obrazów Docker, użyj komendy docker container rm a następnie identyfikatora kontenerów, które chcesz usunąć.

Możesz uzyskać listę wszystkich kontenerów, przekazując flagę -a do polecenia docker container ls :

docker container ls -a

Dane wyjściowe powinny wyglądać mniej więcej tak:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc3f2ff51cab centos "/bin/bash" 2 months ago Created competent_nightingale cd20b396a061 solita/ubuntu-systemd "/bin/bash -c 'exec …" 2 months ago Exited (137) 2 months ago systemd fb62432cf3c1 ubuntu "/bin/bash" 3 months ago Exited (130) 3 months ago jolly_mirzakhani

Gdy znasz CONTAINER ID kontenera, który chcesz usunąć, przekaż go do polecenia docker container rm . Na przykład, aby usunąć pierwsze dwa kontenery wymienione w powyższym pliku wyjściowym, uruchom:

docker container rm cc3f2ff51cab cd20b396a061

Error response from daemon: You cannot remove a running container fc983ebf4771d42a8bd0029df061cb74dc12cb174530b2036987575b83442b47. Stop the container before attempting removal or force remove.

Usuń wszystkie zatrzymane pojemniki

Przed wykonaniem polecenia usuwania można uzyskać listę wszystkich niedziałających (zatrzymanych) kontenerów, które zostaną usunięte za pomocą następującego polecenia:

docker container ls -a --filter status=exited --filter status=created

Aby usunąć wszystkie zatrzymane kontenery, użyj polecenia docker container prune :

docker container prune

Zostaniesz poproszony o kontynuowanie, użyj flagi -f lub --force aby ominąć monit.

WARNING! This will remove all stopped containers. Are you sure you want to continue? y

Usuń pojemniki za pomocą filtrów

Polecenie docker container prune pozwala usuwać kontenery na podstawie warunków za pomocą flagi filtrującej --filter .

W chwili pisania tego artykułu obecnie obsługiwane filtry są dostępne i label . Możesz użyć więcej niż jednego filtra, używając wielu flag --filter .

Na przykład, aby usunąć wszystkie obrazy utworzone ponad 12 godzin temu, uruchom:

docker container prune --filter "until=12h"

Zatrzymaj i usuń wszystkie pojemniki

Możesz uzyskać listę wszystkich kontenerów Docker w twoim systemie, używając komendy docker container ls -aq .

Aby zatrzymać wszystkie działające kontenery, użyj polecenia docker container stop a następnie listy wszystkich identyfikatorów kontenerów.

docker container stop $(docker container ls -aq)

Po zatrzymaniu wszystkich kontenerów można je usunąć za pomocą komendy docker container rm a następnie listy identyfikatorów kontenerów.

docker container rm $(docker container ls -aq)

Usuwanie obrazów dokera

Usuń jeden lub więcej zdjęć

Aby usunąć jeden lub więcej obrazów Docker, użyj polecenia docker images ls aby znaleźć identyfikator obrazów, które chcesz usunąć.

docker image ls

Dane wyjściowe powinny wyglądać mniej więcej tak:

REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 75835a67d134 7 days ago 200MB ubuntu latest 2a4cca5ac898 2 months ago 111MB linuxize/fedora latest a45d6dca3361 3 months ago 311MB java 8-jre e44d62cf8862 3 months ago 311MB

Po zlokalizowaniu obrazów, które chcesz usunąć, przekaż ich IMAGE ID docker image rm komendy docker image rm . Na przykład, aby usunąć pierwsze dwa obrazy z powyższego wyjścia:

docker image rm 75835a67d134 2a4cca5ac898

Error response from daemon: conflict: unable to remove repository reference "centos" (must force) - container cd20b396a061 is using its referenced image 75835a67d134

Usuń wiszące obrazy

Docker udostępnia polecenie docker image prune dokera, którego można użyć do usunięcia zawieszonych i nieużywanych obrazów.

Obraz zwisający to obraz, który nie jest oznaczony i nie jest używany przez żaden kontener. Aby usunąć wiszące obrazy:

docker image prune

Zostaniesz poproszony o kontynuowanie, użyj flagi -f lub --force aby ominąć monit.

WARNING! This will remove all dangling images. Are you sure you want to continue? y Podczas usuwania wiszących obrazów, jeśli obrazy zbudowane przez Ciebie nie są oznaczone, zostaną również usunięte.

Usuń wszystkie nieużywane obrazy

Aby usunąć wszystkie obrazy, do których nie odwołuje się żaden istniejący kontener, a nie tylko wiszące, użyj polecenia prune z flagą -a :

docker image prune -a

WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? y

Usuń obrazy za pomocą filtrów

Za pomocą polecenia docker image prune można również usuwać obrazy w oparciu o określony warunek, używając flagi filtrowania --filter .

W chwili pisania tego artykułu obecnie obsługiwane filtry są dostępne i label . Możesz użyć więcej niż jednego filtra, używając wielu flag --filter .

Na przykład, aby usunąć wszystkie obrazy utworzone ponad 12 godzin temu, uruchomiłbyś:

docker image prune -a --filter "until=12h"

Usuwanie woluminów Docker

Usuń jeden lub więcej woluminów

Aby usunąć jeden lub więcej woluminów Docker, użyj polecenia docker volume ls aby znaleźć identyfikator woluminów, które chcesz usunąć.

docker volume ls

Dane wyjściowe powinny wyglądać mniej więcej tak:

DRIVER VOLUME NAME local 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163 local terano

Po znalezieniu VOLUME NAME woluminów, które chcesz usunąć, przekaż je do komendy docker volume rm . Na przykład, aby usunąć pierwszy wolumin wymieniony w powyższym danych wyjściowych, uruchom:

docker volume rm 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163

Error response from daemon: remove 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163: volume is in use -

Usuń wszystkie nieużywane woluminy

Aby usunąć wszystkie nieużywane woluminy, użyj polecenia docker image prune :

docker volume prune

Zostaniesz poproszony o kontynuowanie, użyj flagi -f lub --force aby ominąć monit.

WARNING! This will remove all local volumes not used by at least one container. Are you sure you want to continue?

Usuwanie sieci Docker

Usuń jedną lub więcej sieci

Aby usunąć jedną lub więcej sieci Docker, użyj polecenia docker network ls aby znaleźć identyfikator sieci, którą chcesz usunąć.

docker network ls

Dane wyjściowe powinny wyglądać mniej więcej tak:

NETWORK ID NAME DRIVER SCOPE 107b8ac977e3 bridge bridge local ab998267377d host host local c520032c3d31 my-bridge-network bridge local 9bc81b63f740 none null local

Po zlokalizowaniu sieci, które chcesz usunąć, przekaż ich NETWORK ID do komendy docker network rm . Na przykład, aby usunąć sieć o nazwie my-bridge-network run:

docker network rm c520032c3d31

Error response from daemon: network my-bridge-network id 6f5293268bb91ad2498b38b0bca970083af87237784017be24ea208d2233c5aa has active endpoints

Usuń całą nieużywaną sieć

Użyj polecenia docker network prune aby usunąć wszystkie nieużywane sieci.

docker network prune

Zostaniesz poproszony o kontynuowanie, użyj flagi -f lub --force aby ominąć monit.

WARNING! This will remove all networks not used by at least one container. Are you sure you want to continue?

Usuń sieci za pomocą filtrów

Za pomocą polecenia docker network prune możesz usuwać sieci w zależności od warunków, używając flagi filtrowania --filter .

W chwili pisania tego artykułu obecnie obsługiwane filtry są dostępne i label . Możesz użyć więcej niż jednego filtra, używając wielu flag --filter .

Na przykład, aby usunąć wszystkie sieci utworzone ponad 12 godzin temu, uruchom:

docker network prune -a --filter "until=12h"

Wniosek

W tym przewodniku pokazaliśmy niektóre z typowych poleceń usuwania kontenerów Docker, obrazów, woluminów i sieci.

Powinieneś również sprawdzić oficjalną dokumentację Dockera.

doker