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 podlocalhost: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.