docker start

Uruchamia ponownie zatrzymany kontener.

docker start uruchamia ponownie kontener, który wcześniej został zatrzymany (np. przez docker stop albo zwykłe zakończenie procesu). Kluczowa różnica względem docker run: tu nie tworzysz nowego kontenera, tylko budzisz istniejący — z zachowaną nazwą, ID, wolumenami, sieciami i danymi w jego warstwie zapisu. Domyślnie działa w tle (detached) i wypisuje tylko nazwę lub ID wystartowanego kontenera, a nie jego logi. Idealne, gdy masz skonfigurowany kontener i chcesz go po prostu wznowić, zamiast za każdym razem klepać długie docker run z dziesięcioma flagami.

Składnia i najważniejsze opcje

Podstawowa składnia: docker start [OPCJE] KONTENER [KONTENER...]

  • -a, --attach — podłącza STDOUT/STDERR kontenera do twojego terminala i przekazuje sygnały, dzięki czemu widzisz wyjście na żywo.
  • -i, --interactive — podłącza STDIN kontenera, czyli pozwala wpisywać dane do działającego procesu (przydatne np. przy powłoce).
  • --detach-keys — nadpisuje sekwencję klawiszy do odłączenia się od kontenera (domyślnie CTRL-p CTRL-q).
  • --checkpoint — wznawia kontener z wcześniej zapisanego checkpointu (funkcja eksperymentalna, wymaga włączenia experimental w demonie).
  • --checkpoint-dir — wskazuje katalog z checkpointami, jeśli trzymasz je poza domyślną lokalizacją (też eksperymentalne).

Jak widzisz, docker start jest celowo ubogi w opcje — całą konfiguracją (porty, zmienne, wolumeny) zajmuje się wcześniejsze docker run. Tu tylko wznawiasz to, co już istnieje.

Przykłady użycia

  • docker start mojabaza — wznawia w tle kontener o nazwie mojabaza i wypisuje tylko jego nazwę.
  • docker start -ai myapp — startuje kontener i od razu podłącza terminal (wyjście + wejście), więc widzisz logi i możesz interagować, jakbyś go uruchomił na pierwszym planie.
  • docker start web1 web2 db — uruchamia kilka kontenerów naraz, jednym poleceniem.
  • docker start $(docker ps -aq) — wznawia wszystkie kontenery na maszynie (także zatrzymane), bo docker ps -aq zwraca ich ID.
  • docker start -a backup-job — uruchamia kontener jednorazowego zadania i czeka na jego wyjście, żeby zobaczyć rezultat w konsoli.

Częste błędy i pułapki

Mylenie z docker run. Jeśli kontener jeszcze nie istnieje, dostaniesz No such container — wtedy potrzebujesz docker run, który tworzy nowy z obrazu. docker start działa wyłącznie na już utworzonych kontenerach (sprawdzisz je przez docker ps -a).

Cisza po starcie to nie błąd. Bez -a polecenie wypisze tylko nazwę kontenera i wróci do promptu — to normalne, kontener pracuje w tle. Logi obejrzysz przez docker logs.

Kontener startuje i od razu pada. Jeśli jego główny proces kończy się natychmiast (np. brak długo działającej komendy), docker ps go nie pokaże, a status w docker ps -a będzie Exited. Przyczynę znajdziesz w logach, nie w samym start.

Flagi nie zmienią konfiguracji. Nie dorzucisz tu nowego portu ani zmiennej środowiskowej — tych ustawień nie da się podmienić przy starcie. Trzeba odtworzyć kontener przez docker run.

Powiązane komendy: docker run, docker stop, docker restart, docker ps, docker logs, docker attach, docker exec.