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ślnieCTRL-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), bodocker ps -aqzwraca 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.