Usuń obrazy Dockera, woluminy i kontenery w kilka sekund

Opublikowany: 2023-03-03

Docker to technologia konteneryzacji oprogramowania, która pomaga programistom tworzyć i wdrażać aplikacje na różnych platformach, od komputerów stacjonarnych po chmurę.

Migawka — lub schemat — kodu źródłowego, zależności i narzędzi wymaganych do zbudowania aplikacji w kontenerze Dockera jest nazywana obrazem. Aplikacje platformy Docker, które wymagają trwałych danych, mogą polegać na pamięci masowej zwanej woluminami, która jest niezależna od bazowego systemu operacyjnego.

Efektywna organizacja obrazów, woluminów i kontenerów jest ważna podczas korzystania z platformy Docker. Nieużywane inkarnacje tych zasobów mogą się gromadzić, zajmując cenne miejsce na dysku i ostatecznie wpływając na wydajność systemu.

W tym artykule opisano różne sposoby utrzymywania organizacji systemu przez usuwanie obrazów (zarówno pojedynczo, jak i wszystkich naraz), woluminów i kontenerów. Będziemy używać interfejsu wiersza poleceń platformy docker (CLI), aby szybko wykonać te zadania.

Jak usunąć obrazy Dockera

Usuwanie przestarzałych lub niepotrzebnych obrazów z Dockera jest niezbędne do utrzymania czystego i zorganizowanego systemu. Przyjrzyjmy się, w jaki sposób CLI może kierować określone obrazy do usunięcia.

Najpierw spójrzmy na obrazy w środowisku Docker za pomocą polecenia 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

Powyższa lista obrazów ujawniła obrazy o nazwach my_image i demo , oba oznaczone jako najnowsze . Trzeci obraz nie ma nazwy ani tagu. W tym przypadku jest to „wiszący” obraz: taki, który nie jest aktualnie używany przez kontener. Ten zwisający obraz powstał w wyniku przebudowy my_image (typowy scenariusz). Poprzednia wersja obrazu nadal znajduje się w systemie plików, ale nie jest obecnie używana.

Lista wyświetla również pierwsze 12 znaków 64-znakowego identyfikatora każdego obrazu, daty utworzenia i miejsce w pamięci, które zajmują obrazy.

Usuń wszystkie nieużywane obrazy

W powyższym przykładzie aukcji mamy wiszący obraz. Możliwe jest jednak, że obraz bez nazwy lub znacznika będzie aktywny. Na przykład można go było użyć do uruchomienia kontenera, odwołując się do jego identyfikatora.

Aby bezpiecznie usunąć wszystkie obrazy, które naprawdę się zawieszają, możesz użyć polecenia 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

Ponownie wymienimy nasze obrazy, aby zobaczyć wyniki naszej pracy:

 $ 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

Po procesie przycinania obraz bez nazwy lub znacznika zniknął.

Nie pozwól, aby bałagan w Dockerze zawładnął Twoim systemem! Dowiedz się, jak skutecznie czyścić obrazy, woluminy i kontenery za pomocą tych przydatnych poleceń. Kliknij, aby tweetować

Usuń określony obraz według nazwy

Możesz skierować obraz do usunięcia, odwołując się do jego nazwy:

 $ docker image rm <image_name>

Uwaga: nie można łatwo usunąć wciąż używanych obrazów. Powinieneś zatrzymać lub usunąć działające kontenery korzystające z obrazów. Chociaż zwykle nie jest to zalecane, możesz wymusić usunięcie aktywnego obrazu za pomocą flagi -f :

 $ docker image rm <image_name> -f

Używanie skrótu rmi do usuwania obrazów

Docker CLI ma skrócone podejście do usuwania obrazów w aliasie rmi . Użycie go do usunięcia obrazu według nazwy wygląda następująco:

 $ docker rmi demo Untagged: demo:latest Deleted: sha256:2cbc27836df4a7707e746e28368f1fdecfefbfb813aae06611ca6913116b80b4

Użyjemy rmi w poniższych przykładach usuwania obrazu.

Usuń wszystkie nieoznakowane obrazy

Nieoznakowane obrazy nadal zajmują cenne miejsce na dysku, co z czasem coraz bardziej spowalnia system.

Aby wyeliminować wszystkie nieoznaczone obrazy w Dockerze, użyj polecenia docker rmi z filtrem. Możesz zapewnić filtry oparte na określonych kryteriach za pomocą opcji -f (nie mylić z flagą -f dostępną dla image rm w celu wymuszenia akcji).

Filtr dangling=true służy do identyfikacji nieoznaczonych obrazów:

 $ docker rmi $(docker images -f "dangling=true" -q)

Opcja -q w powyższym poleceniu wyświetla identyfikatory obrazów wszystkich nieoznakowanych obrazów. Wszystkie te identyfikatory są następnie przekazywane jako argumenty do docker rmi w celu ich usunięcia.

Ten filtr używa słowa kluczowego „dangling”, ale jak wspomniano powyżej, niektóre obrazy bez tagów mogą być w rzeczywistości aktywne. Zostaniesz ostrzeżony, jeśli obraz wybrany przez ten filtr nie jest naprawdę zwisający.

Usuń określony obraz według identyfikatora

Możesz użyć polecenia docker rmi , aby usunąć dowolny obraz, odwołując się do jego identyfikatora:

 $ docker rmi <image_id>

Usuń określony obraz według nazwy i znacznika

Możesz usunąć określony obraz wraz z jego nazwą i znacznikiem za pomocą polecenia docker rmi .

Na przykład, jeśli masz wiele obrazów o tej samej nazwie, ale różnych tagach, możesz usunąć konkretny obraz, używając tego formatu:

 $ docker rmi <image_name>:<tag>

Ta metoda jest przydatna, gdy chcesz usunąć określoną wersję obrazu zamiast usuwać wszystkie obrazy związane z repozytorium.

Usuń wszystkie obrazy z najnowszym tagiem

W Dockerze tag „najnowsza” odnosi się do najnowszej wersji określonego obrazu Dockera. Najnowszy tag jest często używany jako domyślny tag dla obrazów platformy Docker. Jest on automatycznie przypisywany do najnowszej kompilacji obrazu, chyba że wyraźnie określono inny znacznik.

Docker udostępnia polecenie usunięcia wszystkich obrazów z tagiem „najnowsze”:

 $ docker rmi $(docker images | grep "latest" | awk '{print $3}')

Powyższe polecenie jest podzielone na 2 części. Najpierw pobiera listę identyfikatorów obrazów, a następnie przekazuje tę listę jako argument do polecenia docker rmi .

Usuń obrazy ze zdalnego repozytorium

Aby usunąć obraz ze zdalnego repozytorium, takiego jak Docker Hub, musisz najpierw zalogować się na konto za pomocą Docker CLI.

Po zalogowaniu wystarczy użyć polecenia docker rmi , aby usunąć obraz. Polecenie docker rmi może usuwać zarówno obrazy lokalne, jak i zdalne:

 docker rmi my_repo/my_image_tag

Warto zauważyć, że możesz usuwać tylko obrazy, które zostały wypchnięte do repozytorium. Podobnie nie można usuwać obrazów używanych przez uruchomione kontenery.

Usuń wiele obrazów ze zdalnego repozytorium

Aby usunąć wiele obrazów ze zdalnego repozytorium, możesz użyć polecenia docker rmi , a następnie identyfikatorów obrazów lub znaczników. Na przykład:

 docker rmi my_repo/image_tag_1 my_repo/image_tag_2 my_repo/image_tag_3

Spowoduje to usunięcie trzech obrazów z tagami image_tag_1 , image_tag_2 i image_tag_3 z repozytorium my_repo .

Jak usunąć woluminy Dockera

Woluminy Dockera mogą zajmować dużo miejsca na dysku, zwłaszcza jeśli zawierają duże ilości danych lub wiele kopii zapasowych. Usuwając woluminy, które nie są już potrzebne, zmniejszasz ryzyko naruszenia bezpieczeństwa danych i zapewniasz, że poufne dane nie będą dostępne dla nieupoważnionych użytkowników. Regularne usuwanie woluminów może również zapewnić aktualność środowiska Docker i zapobiegać problemom powodowanym przez nieaktualne dane.

Te polecenia trwale niszczą wszystkie dane przechowywane w woluminie, więc używaj ich ostrożnie.

Usuń wszystkie nieużywane woluminy

W Dockerze usuwanie nieużywanych woluminów jest tak samo ważne jak usuwanie obrazów lub kontenerów.

Aby zwolnić miejsce na dysku, możesz użyć polecenia docker volume prune .

Usuń określony wolumin według nazwy

Usunięcie określonego woluminu w Dockerze jest przydatne do usuwania nieużywanych woluminów. Oto polecenie usunięcia woluminu:

 docker volume rm my_volume_name

Za pomocą powyższego polecenia wolumin my_volume_name zostanie usunięty. Docker generuje błąd, jeśli próbujesz usunąć używany wolumin. Możesz sprawdzić dostępne woluminy za pomocą polecenia docker volume ls .

Jak usunąć kontenery Docker

Pracując dłużej z Dockerem, możesz gromadzić wiele nieużywanych kontenerów, które zajmują zasoby dyskowe. Jeśli ich nie usuniesz, mogą się z czasem gromadzić i zajmować cenne zasoby dysku, spowalniając system i potencjalnie narażając Cię na ryzyko.

Usuń wszystkie zatrzymane kontenery

Polecenie docker container prune może usunąć wszystkie zatrzymane kontenery w Dockerze. Tutaj polecenie tworzy listę wszystkich zatrzymanych kontenerów, które zostaną usunięte i prosi o potwierdzenie przed kontynuowaniem. Pomaga to odzyskać miejsce na dysku i utrzymać czyste i zorganizowane środowisko Docker, jednocześnie umożliwiając podwójne sprawdzenie, czy nie tracisz niczego ważnego:

 $ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 4df4c47c4df4 d35bcec20bce

Pamiętaj, że za pomocą tego polecenia można usuwać tylko zatrzymane kontenery. Jeśli chcesz usunąć działające kontenery, musisz je najpierw zatrzymać lub użyć innego polecenia.

Usuń określony kontener według identyfikatora

W Dockerze możesz usunąć określony kontener według identyfikatora za pomocą docker rm command wraz z identyfikatorem kontenera. Najpierw uzyskaj cały identyfikator kontenera za pomocą docker ps command :

 $ docker ps -a -q 1ce3cdeb4035 06b79541e25c fa98f1804e3e $ docker rm 1ce3cdeb4035

Powyższe polecenie działa tylko wtedy, gdy kontener jest zatrzymany. Jeśli kontener jest uruchomiony, musisz go usunąć na siłę za pomocą flagi -f:

 $ docker rm -f 1ce3cdeb4035

Usuń określony kontener według nazwy

Docker zapewnia uniwersalne polecenie docker rm do usuwania obu kontenerów według nazwy i identyfikatora.

Na przykład, jeśli masz kontener o nazwie web_server , możesz go usunąć za pomocą następującego polecenia:

 $ docker rm web_server

Po pierwsze, ważne jest, aby zatrzymać pojemnik. Docker udostępnia polecenie docker stop w celu zatrzymania określonego kontenera.

Usuń wszystkie działające kontenery

Aby usunąć wszystkie działające kontenery, możesz użyć polecenia docker rm :

 $ docker rm $(docker ps -q)

Użycie polecenia docker ps -q powoduje wyświetlenie identyfikatorów uruchomionych kontenerów. Następnie identyfikatory są przekazywane do polecenia docker rm , które usuwa wszystkie kontenery.

Pamiętaj, że to polecenie usunie tylko uruchomione kontenery. Jeśli chcesz usunąć wszystkie kontenery, w tym zatrzymane, możesz zamiast tego użyć następującego polecenia:

 $ docker rm $(docker ps -a -q)
Jeśli chcesz zoptymalizować system Docker, usunięcie niepotrzebnych obrazów, woluminów i kontenerów to świetne miejsce na początek! Kliknij, aby tweetować

Streszczenie

W tym artykule wyjaśniono, jak usunąć obrazy, woluminy i kontenery platformy Docker. Poznałeś różne metody utrzymywania czystego i zorganizowanego systemu. Obejmował polecenia usunięcia wszystkich nieużywanych, nieoznaczonych lub określonych obrazów według identyfikatora lub nazwy. Nauczyłeś się również poleceń usuwania wszystkich zatrzymanych kontenerów lub określonego kontenera według identyfikatora lub nazwy.

Usuwanie obrazów, woluminów i kontenerów platformy Docker to prosty proces, który może pomóc w zarządzaniu nieużywanymi komponentami, odzyskaniu cennego miejsca na dysku i często poprawie wydajności systemu.

To właśnie ta prostota przyciąga programistów do Dockera i nie ma prostszego sposobu na wdrożenie aplikacji opracowanej w Dockerze niż z platformą Application Hosting firmy Kinsta. Możesz teraz wypróbować za darmo.