docker rm

Usuwa jeden lub więcej kontenerów.

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 nazwie webapp. 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 kontener cache razem 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.