docker rm usuwa jeden lub więcej zatrzymanych kontenerów z Twojego hosta. Kontener to instancja obrazu — kiedy go uruchamiasz, Docker tworzy warstwę zapisywalną i trochę metadanych, które zostają nawet po zatrzymaniu. Komenda docker rm sprząta to po sobie: kasuje sam kontener, a nie obraz, z którego powstał. Jeśli robisz docker run bez --rm, zatrzymane kontenery zalegają w systemie i puchną na liście docker ps -a — i właśnie wtedy sięgasz po docker rm. Działa identycznie na Linuksie, macOS i Windowsie (przez Docker Desktop), bo to klient gadający z tym samym demonem.
Składnia i najważniejsze opcje
Podstawowa składnia: docker rm [OPTIONS] CONTAINER [CONTAINER...]. Kontener wskazujesz po nazwie albo po ID (wystarczy unikalny prefiks ID).
-f,--force— wymusza usunięcie działającego kontenera. Docker wysyła SIGKILL i dopiero potem kasuje. Bez tej flagi usuniesz tylko zatrzymane.-v,--volumes— usuwa anonimowe wolumeny przypięte do kontenera. Wolumeny nazwane (te z-v nazwa:/ścieżka) zostają nietknięte.-l,--link— usuwa wskazany link sieciowy między kontenerami, a nie sam kontener. Relikt ze starego mechanizmu--link, dziś rzadko używany.
To wszystkie flagi tej komendy — docker rm jest celowo ubogie. Cała magia siedzi w trzech opcjach powyżej.
Przykłady użycia
docker rm webapp— usuwa zatrzymany kontener o nazwiewebapp. Jeśli wciąż działa, dostaniesz błąd.docker rm -f webapp— ubija działający kontener (SIGKILL) i od razu go kasuje. Przydatne, gdy coś się zawiesiło.docker rm app1 app2 db— usuwa kilka kontenerów naraz, wymieniając je po spacji.docker rm -v cache— kasuje kontenercacherazem z jego anonimowymi wolumenami, żeby nie zostawały sieroty na dysku.docker rm $(docker ps -aq)— usuwa wszystkie zatrzymane kontenery hurtem, podstawiając listę ich ID. Dodaj-f, jeśli chcesz zmieść też te działające.
Częste błędy i pułapki
Najczęstsza wpadka: próbujesz usunąć działający kontener bez -f i dostajesz „You cannot remove a running container… Stop the container before attempting removal or force remove”. Albo zatrzymaj go wcześniej przez docker stop, albo użyj -f.
Pamiętaj o różnicy: docker rm kasuje kontener, a docker rmi kasuje obraz. To dwie różne komendy — łatwo pomylić jedną literę i się zdziwić.
Flaga -v usuwa tylko wolumeny anonimowe. Jeśli liczysz, że tym sposobem skasujesz nazwany wolumen z bazą danych — nie skasujesz, i całe szczęście. Do nazwanych służy docker volume rm.
Uważaj na docker rm -f $(docker ps -aq) na produkcji — to wybije i usunie absolutnie wszystko, łącznie z tym, co miało żyć. Świetne do sprzątania środowiska lokalnego, fatalne wpisane w niewłaściwy terminal.
Powiązane komendy: docker stop, docker ps, docker rmi, docker container prune (czyści wszystkie zatrzymane kontenery za jednym zamachem), docker volume rm.