docker login

Loguje do rejestru obrazów Docker.

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 adresem registry.firma.pl jako użytkownik jan; 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.