docker login uwierzytelnia twojego klienta Dockera w rejestrze obrazów — domyślnie w Docker Hub, ale równie dobrze w prywatnym rejestrze firmowym, GitHub Container Registry, AWS ECR czy GitLab. Po udanym logowaniu poświadczenia trafiają do pliku konfiguracyjnego (zwykle ~/.docker/config.json albo do skonfigurowanego helpera poświadczeń), dzięki czemu kolejne docker pull i docker push do prywatnych repozytoriów po prostu działają, bez ponownego podawania hasła. Krótko mówiąc: to klucz do drzwi, zanim zaczniesz pobierać i wypychać obrazy.
Składnia i najważniejsze opcje
Podstawowa składnia wygląda tak: docker login [OPTIONS] [SERVER]. Gdy pominiesz SERVER, Docker zaloguje cię do domyślnego Docker Hub.
-u, --username— nazwa użytkownika w rejestrze. Podanie jej wyłącza dla Docker Hub domyślny przepływ z kodem urządzenia.-p, --password— hasło lub token podane wprost w poleceniu. Wygodne, ale niebezpieczne (patrz pułapki).--password-stdin— czyta hasło ze standardowego wejścia, zamiast trzymać je w argumencie. Bezpieczny wybór do skryptów.
Lista flag jest celowo krótka — docker login to prosta komenda. Resztę magii (helpery, tokeny) konfiguruje się w config.json.
Przykłady użycia
docker login— logowanie do Docker Hub w trybie interaktywnym; Docker zapyta o login i hasło (lub przeprowadzi przez kod urządzenia).docker login -u jan registry.firma.pl— logowanie do prywatnego rejestru pod adresemregistry.firma.pljako użytkownikjan; o hasło dopyta interaktywnie.cat ~/token.txt | docker login -u jan --password-stdin— podaje token przez STDIN, więc nie wyląduje on w historii powłoki ani w logach.echo "$GHCR_TOKEN" | docker login ghcr.io -u jan --password-stdin— typowe logowanie do GitHub Container Registry z tokenem trzymanym w zmiennej środowiskowej.
Częste błędy i pułapki
Największa pułapka to -p z hasłem wpisanym wprost w terminalu — ląduje ono w historii powłoki i potrafi przeciekać do logów. Docker sam wyświetla wtedy ostrzeżenie i sugeruje --password-stdin. W skryptach CI zawsze przekazuj sekret przez STDIN.
Druga klasyczna pomyłka: literówka w adresie serwera. Bez SERVER logujesz się do Docker Hub, a nie do firmowego rejestru — i potem dziwisz się, że push idzie nie tam, gdzie myślałeś. Pełny adres obrazu (np. registry.firma.pl/zespol/obraz) musi pasować do tego, gdzie się zalogowałeś.
Pamiętaj też, że poświadczenia są zapisywane na dysku, czasem jako zwykły base64 w config.json. Na współdzielonych maszynach skonfiguruj helper poświadczeń i nie zapomnij o docker logout, gdy kończysz pracę.
Powiązane komendy: docker logout, docker pull, docker push, docker tag.