Podczas wypychania obrazu dockera (po pomyślnym zalogowaniu) z mojego hosta otrzymuję komunikat „nieautoryzowany: wymagane uwierzytelnienie”.
Szczegóły poniżej.
-bash-4.2# docker login --username=asamba [email protected]
WARNING: login credentials saved in /root/.docker/config.json
*Login Succeeded*
-bash-4.2#
-bash-4.2# docker push asamba/docker-whale
Do you really want to push to public registry? [y/n]: y
The push refers to a repository [docker.io/asamba/docker-whale] (len: 0)
faa2fa357a0e: Preparing
unauthorized: authentication required
- Wersja platformy Docker: 1.9.1 (zarówno klient, jak i serwer)
- http://hub.docker.com ma również utworzone repozytorium (asamba / docker-whale).
W / var / log / messages jest 403, nie wiem, czy to docker. Zobacz poniżej.
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.884872524Z" level=info msg="{Action=push, Username=asamba, LoginUID=1001, PID=2125}"
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.884988574Z" level=error msg="Handler for POST /v1.21/images/asamba/docker-whale/push returned error: Error: Status 403 trying to push repository asamba/docker-whale to official registry: needs to be forced"
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.885013241Z" level=error msg="HTTP Error" err="Error: Status 403 trying to push repository asamba/docker-whale to official registry: needs to be forced" statusCode=403
Apr 16 11:39:05 localhost journal: time="2016-04-16T11:39:05.420188969Z" level=info msg="{Action=push, Username=asamba, LoginUID=1001, PID=2125}"
Apr 16 11:39:06 localhost kernel: XFS (dm-4): Mounting V4 Filesystem
Apr 16 11:39:06 localhost kernel: XFS (dm-4): Ending clean mount
Apr 16 11:39:07 localhost kernel: XFS (dm-4): Unmounting Filesystem
Każda pomoc jest mile widziana, daj mi znać, jeśli potrzebujesz dodatkowych informacji. Nacisnąłem również z -f. Brak szczęścia!
Odpowiedzi:
Edycja (13/08/2017)
Na podstawie komentarza @ KaraPirinc, w wersji docker 17, aby się zalogować (krok 1),
Miałem też ten sam problem, tak go rozwiązuję.
Krok 1: Zaloguj się do Docker Hub
Krok 2: Utwórz repozytorium w Docker Hub . powiedzmy „ mysqlserver: sql ”.
źródło
docker login
działa również bez parametrówRozwiązanie, które opublikowałeś, nie działa dla mnie ...
To działa dla mnie:
Utwórz repozytorium o żądanej nazwie.
Kiedy zatwierdzasz obraz, nazwij go tak, jak repozytorium, łącznie z nazwą użytkownika
<dockerusername>/desired-name
. Na przykładradu/desired-name
.źródło
DOBRZE! nieważne; Znalazłem rozwiązanie. z 403 Podejrzewa się, że HTTP nie prowadzi do właściwego adresu URL.
Zmień plik, który ma zapisane poświadczenia logowania,
~/.docker/config.json
z domyślnego wygenerowanego plikudo - Zwróć uwagę na zmianę z docker.io -> index.docker.io/v1. To jest zmiana.
Mam nadzieję, że to pomoże.
Zauważ, że pole autoryzacji powinno być „nazwa użytkownika: hasło” zakodowane w base64. Na przykład: „nazwa użytkownika: hasło” zakodowane w base64 to „dXNlcm5hbWU6cGFzc3dvcmQ =”
więc twój plik będzie zawierał:
źródło
sudo docker login -e [email protected] -u someuser -p somepass https://index.docker.io/v1/
docker login -u someuser https://index.docker.io/v1/
zapyta o hasło, zapobiegając umieszczeniu go w historii poleceń.jeśli używasz heroku, upewnij się, że nie zapomniałeś o „heroku container: login” przed naciśnięciem.
źródło
Miałem podobny problem z podobnie niepomocnym komunikatem o błędzie, ale okazało się, że próbowałem przesłać obraz, który utworzyłem, do wystąpienia zarządzanego przez komputer docker.
Kiedy zalogowałem się do samej instancji, zrobiłem
docker login
idocker push
wszystko działało dobrze.źródło
Miałem ten sam problem, ale naprawiłem go za pomocą wypychania z określonym adresem URL. as: docker login -u https://index.docker.io/v1/
wyjście konsoli:
źródło
Chociaż standardowym procesem jest zalogowanie się, a następnie wypchnięcie do rejestru Dockera, sztuczka pozwalająca rozwiązać ten konkretny problem polega na zalogowaniu się, podając nazwę użytkownika i hasło w tym samym wierszu.
Więc :
Pracuje
natomiast
Niepowodzenie
źródło
Nawet ja zalogowałem się i sprawdziłem całą konfigurację to dalej nie działa !!!
Okazało się, że budując dockera, zapomniałem umieścić swoją nazwę użytkownika przed nazwą repozytorium
(zbuduj pomyślnie)
A potem, kiedy wrzuciłem do mojego repozytorium, użyłem
Pokaże
unauthorized authentication required
Zatem rozwiązanie to nazwa kompilacji, a push powinien być dokładnie taki sam
źródło
Problem, z którym borykają się nowicjusze, polega na tym, że traktujemy repozytorium docker hub tak samo jak repozytorium maven i myślimy, że może ono zawierać wiele różnych plików, folderów i innych treści.
Z drugiej strony repozytorium dockera to tylko pojedynczy obraz, nie zawiera niczego innego. Może zawierać różne wersje tego samego obrazu, ale będzie zawierał tylko jeden obraz.
Więc nazwij swoje repozytorium w docker hub taką samą nazwą, jak obraz, który chcesz do niego wypchnąć, i użyj swojej nazwy użytkownika dockerhub jako prefiksu. Na przykład, jeśli twoja nazwa użytkownika to moja nazwa użytkownika, a nazwa twojego obrazu to docker -whale , pamiętaj, aby nazwać swoje repozytorium dockerhub jako docker -whale i użyj poniższych poleceń, aby oznaczyć i wypchnąć obraz do repozytorium:
źródło
Jeśli po raz pierwszy wysyłasz nowy prywatny obraz, upewnij się, że Twoja subskrypcja obsługuje ten dodatkowy obraz.
Docker umożliwia nazwanie 6 prywatnych obrazów, nawet jeśli płacisz tylko za 5, ale nie możesz wypychać tego szóstego obrazu. Brak informacji jest zagmatwany i irytujący.
źródło
Tutaj rozwiązanie dla mojej sprawy (prywatne repozytoria, darmowy plan kont)
https://success.docker.com/Datacenter/Solve/Getting_%22unauthorized%3A_authentication_required%22_when_trying_to_push_image_to_DTR
Nazwa kompilacji obrazu do wypchnięcia musi mieć taką samą nazwę jak repozytorium.
Przykład: repozytoria w docker hub to: accountName / resposName image build name "accountName / resposName" -> docker build -t accountName / resposName
następnie wpisz docker push accountName / resposName: latest
To wszystko.
źródło
Udało mi się stworzyć nowe repozytorium i zmienić nazwę obrazu na
$ docker tag image_id myname/server:latest
źródło
Upewnij się, że masz więcej miejsc na prywatne obrazy.
W moim przypadku przekonwertowałem użytkownika na organizację i straciłem jeden darmowy prywatny obraz, więc poprzednie wypchnięcia, które działały, już nie działały.
źródło
Moim problemem był nieprawidłowy token autoryzacyjny po 5 minutach. Ze względu na rozmiar obrazu wypchnięcie zajęło ponad 5 minut.
Naprawiłem to, zwiększając „Czas trwania tokena autoryzacji” do 10 minut.
źródło
docker login
w innym oknie terminala na krótko przed zakończeniem przesyłaniaAdmin Area -> Settings -> CI/CD -> Container Registry
. url ścieżka:/admin/application_settings/ci_cd
.Upewnij się, że nazwa repozytorium Dockera jest zgodna z nazwą lokalnego repozytorium Docker. np. powiedzmy, czy masz lokalną nazwę repozytorium „kavashgar / nodjsapp”
wtedy powinieneś mieć również nazwy repozytoriów „kavashgar” w docker hub
źródło
w pliku konfiguracyjnym ~ / .docker / config.json dodaj
gdzie XXXXX to kodowanie base64 twojej nazwy użytkownika: hasło (to: jest włączone) z https://hub.docker.com
w moim przypadku miałem ten sam błąd przy ciągnięciu. problem (pod Windows) został sprowokowany przez podwójny działający proces dockera, więc zabij je wszystkie i zrestartuj jedną usługę i działa.
źródło
Były już dobre odpowiedzi, ale chciałbym wspomnieć o jednej - NIE musisz wcześniej tworzyć repozytorium przed wysłaniem go.
Problem polegał na tym, że nie podałem poprawnej nazwy użytkownika konta, na które się zalogowałem. Ale kiedy poprawna nazwa użytkownika zostanie ustawiona przed obrazem (np.
YOURNAME/YOURIMAGE
) Za pomocą jego tagu, możesz go przesłać bez wcześniejszego tworzenia nowego repozytorium.źródło
Ten sam problem podczas wypychania obrazu:
Co ja zrobiłem:
Który wydrukował:
Rozwiązanie: użyj najnowszej składni logowania.
Zapyta o nazwę użytkownika i hasłoInteraktywnie . Wtedy push obrazu po prostu działa.
Nawet po użyciu nowej składni mój
~/.docker/config.json
wygląd wygląda tak po zalogowaniu:Więc poświadczenie znajduje się w pęku kluczy macOS.
źródło
Otrzymałem podobny błąd w przypadku sudo docker push / sudo docker pull w repozytorium ecr, ponieważ aws cli jest zainstalowane na moim użytkowniku (abc) i docker jest zainstalowane na koncie root. Próbowałem uruchomić sudo docker push na moim użytkowniku (abc)
Naprawiono to przez zainstalowanie aws cli w root, skonfigurowanie aws przy użyciu aws configure w rootowaniu i uruchomienie sudo docker push do ecr na koncie użytkownika root
źródło
Spróbuj
docker logout
najpierw, a następnie zaloguj się ponownie zdocker login
źródło
Możesz gdzieś mv plik xxx / .docker / config.json, aby go obsłużyć. Następnie spróbuj zalogować się ponownie, aby utworzyć nowy plik config.json.
źródło
Jeśli biegasz
windows 7 docker Registry
**Docker Quick Start terminal**
run (ten terminal umożliwia połączenie) Dopóki nie wypchnąłeś obrazów, to utrzyma token przy życiu.docker login
Upewnij się, że otagowałeś obraz nazwą użytkownika
docker build -f Dockerfile -t 'username'/imagename
obraz push
docker image push username/imagename
Uwaga : nazwa obrazu wszystkie małe litery
źródło
Miałem podobny problem.
Dowiedziałem się, że nawet jeśli zaloguję się pomyślnie za pomocą
docker login
polecenia, jakiekolwiek ściągnięcie nie powiodło się. Próbowałem wyczyścić plik~/.docker/config.json
ale nic się nie poprawiło.Patrząc w plik konfiguracyjny zauważyłem, że poświadczenia nie zostały tam zapisane, ale w pliku
"credsStore": "secretservice"
. W Linuksie jest to narzędzieseahorse
lubPasswords and Keys
. Sprawdziłem tam i wyczyściłem wszystkie dane logowania do docker hub. Po tym nowy login dockera działał zgodnie z oczekiwaniami.źródło