docker compose down to komenda, która sprząta po tym, co odpaliłeś przez docker compose up. Zatrzymuje wszystkie kontenery zdefiniowane w pliku compose.yaml, a następnie je usuwa razem z sieciami, które Compose stworzył na potrzeby stacku. Domyślnie nie rusza Twoich danych — nazwane wolumeny i obrazy zostają na miejscu, więc kolejne up wstanie z tym samym stanem bazy czy plików. To czysty, kontrolowany sposób na zwinięcie środowiska, w przeciwieństwie do ręcznego ubijania kontenerów po kolei.
Składnia i najważniejsze opcje
Podstawowa składnia wygląda tak: docker compose down [OPCJE] — uruchamiasz ją w katalogu z plikiem Compose.
-v, --volumes— usuwa nazwane wolumeny zadeklarowane w sekcjivolumesoraz wolumeny anonimowe. Czyli kasuje też dane (uwaga na bazy!).--rmi TYPE— usuwa obrazy:all(wszystkie używane przez usługi) albolocal(tylko te bez własnego taga w poluimage).--remove-orphans— usuwa kontenery usług, których już nie ma w pliku Compose (zostały po starszej wersji konfiguracji).-t, --timeout SEKUNDY— czas na łagodne zatrzymanie (SIGTERM) zanim Docker wyśle SIGKILL. Domyślnie 10 sekund.--dry-run— pokazuje, co komenda by zrobiła, ale niczego nie wykonuje. Dobre do nerwowego sprawdzenia przed kasowaniem.
Przykłady użycia
docker compose down— zatrzymuje i usuwa kontenery oraz sieci stacku, zostawiając wolumeny i obrazy nietknięte. Najczęstszy wariant.docker compose down -v— to samo plus usunięcie nazwanych wolumenów. Używasz, gdy chcesz wyczyścić dane, np. zresetować bazę do zera.docker compose down --rmi all— dokłada usunięcie wszystkich obrazów używanych przez usługi. Przyda się przy odzyskiwaniu miejsca na dysku.docker compose down --remove-orphans— sprząta także osierocone kontenery po usługach, które usunąłeś z pliku.docker compose down -t 30— daje usługom 30 sekund na czyste zamknięcie, zamiast domyślnych 10. Sensowne dla baz danych, które nie lubią nagłego SIGKILL.
Częste błędy i pułapki
Największa mina to -v odpalone z rozpędu na produkcji albo na lokalnej bazie, której nie zbackupowałeś — kasuje wolumeny bez pytania. Compose nie zapyta „czy na pewno”, po prostu zrobi to, co kazałeś. Druga sprawa: down działa na cały stack z bieżącego pliku Compose, a nie na pojedynczą usługę. Jeśli chcesz tylko zatrzymać kontenery i zostawić je do ponownego startu, użyj docker compose stop — nie usuwa kontenerów ani sieci. Pamiętaj też, że down czyta plik z bieżącego katalogu (lub wskazany przez -f); odpalony nie tam, gdzie trzeba, albo nic nie znajdzie, albo zwinie inny stack niż myślisz. I drobiazg: stary docker-compose (z myślnikiem, v1) bywa jeszcze na serwerach — flagi są te same, ale to osobny, wygaszony już projekt.
Powiązane komendy: docker compose up, docker compose stop, docker compose start, docker compose rm, docker compose ps, docker system prune.