docker restart to polecenie, które zatrzymuje działający kontener i od razu uruchamia go ponownie — czyli klasyczne „wyłącz i włącz”. Pod spodem robi to samo co docker stop i docker container start jednym ruchem: wysyła do procesu sygnał zatrzymania, czeka chwilę aż się grzecznie zamknie, a potem startuje go z powrotem z tą samą konfiguracją (te same wolumeny, sieci, zmienne środowiskowe). Przydaje się, gdy aplikacja w kontenerze zawiesiła się, zjadła wszystkie zasoby albo gdy podmieniłeś plik konfiguracyjny montowany do środka i chcesz, żeby usługa wczytała go od nowa.
Składnia i najważniejsze opcje
Podstawowa forma wygląda tak: docker restart [OPCJE] KONTENER [KONTENER...]. Kontener wskazujesz po nazwie albo po ID (wystarczy kilka pierwszych znaków). Najważniejsze flagi:
-t,--time— liczba sekund oczekiwania na łagodne zatrzymanie, zanim kontener dostanieSIGKILL. Domyślnie 10.-s,--signal— sygnał wysyłany do procesu, np.SIGTERMalboSIGINT. Domyślnie używany jestStopSignalz obrazu, a jeśli go nie ma —SIGTERM.
To w zasadzie cały zestaw — docker restart jest celowo ubogie w opcje, bo cała magia konfiguracji dzieje się przy docker run. Pamiętaj też, że obie składnie działają: krótsza docker restart i pełna docker container restart robią dokładnie to samo.
Przykłady użycia
docker restart web— restartuje kontener o nazwie web z domyślnym czasem oczekiwania 10 sekund.docker restart web db cache— restartuje kilka kontenerów naraz, jeden po drugim.docker restart -t 30 web— daje aplikacji aż 30 sekund na czyste zamknięcie (np. dokończenie zapisu do bazy), zanim zostanie ubita.docker restart -t 0 web— natychmiastowy, twardy restart bez czekania na łagodne zamknięcie. Szybko, ale aplikacja nie zdąży posprzątać.docker restart $(docker ps -q)— restartuje wszystkie aktualnie działające kontenery (pomagadocker ps -qzwracające same ID).
Częste błędy i pułapki
Najczęstsza pomyłka: ludzie liczą, że restart wczyta nowy obraz. Nie wczyta. docker restart używa tej samej warstwy obrazu, z którą kontener był stworzony — jeśli zbudowałeś nową wersję, musisz usunąć kontener i postawić go na nowo (docker rm + docker run albo docker compose up -d). Druga pułapka: zmienne środowiskowe i porty ustawiasz tylko przy docker run, restart ich nie zmieni.
Uważaj na zbyt krótki -t przy bazach danych i kolejkach — ubicie procesu SIGKILL w trakcie zapisu potrafi zostawić uszkodzone dane. Wreszcie: jeśli kontener jest w trybie --restart=always, ręczny restart i tak zadziała, ale daemon może go też podnosić sam — nie pomyl tego z awarią.
Powiązane komendy: docker stop, docker start, docker ps, docker logs, docker kill oraz docker compose restart.