docker run

Tworzy i uruchamia nowy kontener z podanego obrazu.

docker run to jedna z pierwszych komend, jakie poznajesz w Dockerze, i prawdopodobnie ta, której będziesz używać najczęściej. W jednym kroku robi dwie rzeczy: tworzy nowy kontener z wybranego obrazu (czyli docker create) i od razu go uruchamia (docker start). Jeśli obrazu nie ma lokalnie, Docker sam ściągnie go z rejestru (domyślnie Docker Hub), zanim wystartuje kontener. Krótko mówiąc: od pustego terminala do działającej aplikacji w jednej linijce.

Składnia i najważniejsze opcje

Podstawowa forma wygląda tak: docker run [OPCJE] OBRAZ [KOMENDA] [ARGUMENTY...]. Opcje idą przed nazwą obrazu, a wszystko po nazwie obrazu nadpisuje domyślną komendę kontenera.

  • -d, --detach — uruchamia kontener w tle i zwraca jego ID, zamiast blokować terminal.
  • -it — połączenie -i (interaktywne STDIN) i -t (alokacja pseudo-TTY); używasz go, gdy chcesz wejść do powłoki kontenera.
  • --name — nadaje kontenerowi czytelną nazwę zamiast losowej (np. boring_tesla).
  • -p HOST:KONTENER, --publish — mapuje port hosta na port w kontenerze, żeby usługa była dostępna z zewnątrz.
  • -v ŹRÓDŁO:CEL, --volume — montuje wolumen lub katalog hosta do kontenera (dane przeżywają usunięcie kontenera).
  • -e KLUCZ=WARTOŚĆ, --env — przekazuje zmienne środowiskowe do kontenera.
  • --rm — automatycznie usuwa kontener po jego zatrzymaniu (świetne do zadań jednorazowych).
  • --network — podłącza kontener do wskazanej sieci Dockera.

Przykłady użycia

  • docker run hello-world — klasyczny test instalacji; pobiera mały obraz i wypisuje komunikat powitalny.
  • docker run -d -p 8080:80 --name web nginx — startuje serwer Nginx w tle, dostępny pod localhost:8080.
  • docker run -it --rm ubuntu bash — wrzuca Cię do interaktywnej powłoki Ubuntu, a po wyjściu kontener znika.
  • docker run -d -e POSTGRES_PASSWORD=tajne -v pgdata:/var/lib/postgresql/data postgres — uruchamia PostgreSQL z hasłem i trwałym wolumenem na dane.
  • docker run --rm -v "$(pwd)":/app -w /app node:20 npm test — odpala testy na bieżącym katalogu bez instalowania Node lokalnie.

Częste błędy i pułapki

Najczęstsza pomyłka to odwrotna kolejność w -p: zapis to HOST:KONTENER, więc -p 80:8080 wystawia port 80 hosta na port 8080 w kontenerze, nie odwrotnie. Druga klasyka: -d i -it nie zawsze grają razem — kontener w tle bez procesu działającego na pierwszym planie po prostu od razu się zakończy. Pamiętaj też, że bez --rm każde docker run zostawia zatrzymany kontener, który zajmuje miejsce (sprawdź docker ps -a). Na Windowsie i macOS Docker działa wewnątrz maszyny wirtualnej, więc montowanie wolumenów bywa wolniejsze i wymaga udostępnienia katalogu w ustawieniach Docker Desktop. I uwaga na --privileged czy montowanie /var/run/docker.sock — to wygodne, ale daje kontenerowi władzę nad całym hostem.

Powiązane komendy: docker create, docker start, docker ps, docker exec, docker stop, docker rm, docker pull, docker logs.