docker unauthorized: требуется аутентификация - после нажатия с успешным входом


101

При отправке образа докера (после успешного входа в систему) с моего хоста я получаю сообщение «unauthorized: authentication required».

Подробности ниже.

-bash-4.2# docker login --username=asamba --email=anand.sambamoorthy@gmail.com
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
  • Версия Docker: 1.9.1 (как клиент, так и сервер)
  • http://hub.docker.com также создал репозиторий (asamba / docker-whale).

В / var / log / messages отображается 403, я не знаю, есть ли этот докер. Увидеть ниже.

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

Любая помощь приветствуется, пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Я тоже сделал толчок с -f. Не повезло!


1
Администратору сайта, а также другим пользователям, которые ищут информацию об этой проблеме, будет полезно, если вы нажмете галочку рядом со своим ответом, чтобы пометить его как «ответ» :-) Вам разрешено (даже рекомендуется) сделать это о переполнении стека.
Синди Мейстер

Ответы:


88

Изменить (13.08.2017)

Основываясь на комментарии @ KaraPirinc, в версии 17 докера для входа в систему (шаг 1),

docker login -u username -p password

У меня тоже была такая же проблема, вот как я ее решаю.

Шаг 1: войдите в Docker Hub

docker login --username=<user username> --email=<user email address>

Шаг 2: создайте репозиторий в Docker Hub . скажем " mysqlserver: sql ".

docker push <user username>/mysqlserver:sql

7
Это должен быть правильный ответ . docker loginтакже работает без параметров
blnc

5
Прекрасно работает. Однако --email устарел .
IgorGanapolsky

(docker версия 17): docker login -u имя пользователя -p пароль
Юсуф Исмаил Октай

Спасибо за обновление. Я обновлю ответ на основе вашего комментария.
GPrathap

34

Опубликованное вами решение не работает для меня ...

Вот что у меня работает:

  1. Создайте репозиторий с желаемым именем.

  2. При фиксации изображения назовите изображение как репозиторий, включая имя пользователя <dockerusername>/desired-name. Например, radu/desired-name.


# docker ps -a получить имя conainer --nostalgic_morse здесь # docker commit -m "test" -a "alex" nostalgic_morse alexcpn / grpc # docker push alexcpn / grpc
Alex Punnen

28

ХОРОШО! неважно; Я нашел решение. с 403 Предполагается, что HTTP не переходит на правильный URL.

Измените файл, в котором хранятся учетные данные для входа, ~/.docker/config.jsonс созданного по умолчанию из

{
        "auths": {
                "docker.io": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

to - обратите внимание на изменение docker.io -> index.docker.io/v1. Это изменение.

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

Надеюсь, это поможет.

Обратите внимание, что в поле аутентификации должно быть указано «имя пользователя: пароль» в кодировке base64. Например: «имя пользователя: пароль» в кодировке base64: «dXNlcm5hbWU6cGFzc3dvcmQ =»

поэтому ваш файл будет содержать:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="

Вы сэкономили мне довольно много времени! Идеальное решение и для меня.
Марко Ленцо

7
У меня тоже сработало. Вот то же самое из командной строки:sudo docker login -e me@example.com -u someuser -p somepass https://index.docker.io/v1/
Banjer

2
Спасибо @Banjer, хотя параметр -e устарел, и sudo не нужно использовать для большинства, кто правильно настроил свою систему. Лучшее решение: docker login -u someuser https://index.docker.io/v1/это запросит пароль, чтобы он не попал в историю команд.
erb

19

если вы используете heroku, убедитесь, что вы не забыли "heroku container: login" перед нажатием.


7

У меня возникла аналогичная проблема с таким же бесполезным сообщением об ошибке, но это оказалось из-за того, что я пытался протолкнуть созданный мной образ на управляемый экземпляр док-машины.

Когда я зашел в сам экземпляр, сделал, docker loginи docker pushвсе заработало .


спасибо, логин в докере автоматически создает файл конфигурации, как описано по ссылке
Felix

7

У меня была такая же проблема, но я исправил ее нажатием с указанным URL. как: docker login -u https://index.docker.io/v1/

вывод консоли:

The push refers to a repository [docker.io/<username>/richcity]
adc9144127c1: Preparing 
4db5654f7a64: Preparing 
ce71ae73bc60: Preparing 
e8e980243ee4: Preparing 
d773e991f7d2: Preparing 
bae23f4bbe95: Waiting 
5f70bf18a086: Waiting 
3d3e4e34386e: Waiting 
e72d5d9d5d30: Waiting 
8d1d75696199: Waiting 
bdf5b19f60a4: Waiting 
c8bd8922fbb7: Waiting 
unauthorized: authentication required

1010deiMac:dockerspace whoami$ docker login -u <username> https://index.docker.io/v1/
Password: 
Login Succeeded
1010deiMac:dockerspace whoami$ docker push <username>/richcity 
The push refers to a repository [docker.io/<username>/richcity]
adc9144127c1: Pushed 
4db5654f7a64: Pushed 
ce71ae73bc60: Pushed 
e8e980243ee4: Pushed 
d773e991f7d2: Pushed 
bae23f4bbe95: Pushed 
5f70bf18a086: Pushed 
3d3e4e34386e: Pushing [=============>                                     ] 45.07 MB/165.4 MB
e72d5d9d5d30: Pushed 
8d1d75696199: Pushing [>                                                  ] 1.641 MB/118.1 MB
bdf5b19f60a4: Pushing [============>                                      ]   142 MB/568.4 MB
c8bd8922fbb7: Pushing [========================>                          ] 59.44 MB/121.8 MB

5

Хотя стандартный процесс состоит в том, чтобы войти в систему, а затем отправить ее в реестр докеров, уловка для решения этой конкретной проблемы заключается в том, чтобы войти, указав имя пользователя и пароль в одной строке.

Так :

docker login -u xxx -p yyy sampledockerregistry.com/myapp 
docker push sampledockerregistry.com/myapp

Работает

в то время как

docker login sampledockerregistry.com 
username : xxx
password : yyy
Login Succeeded

docker push sampledockerregistry.com/myapp

Терпит неудачу


4

Даже я авторизовался и проверил всю конфигурацию, все равно не работает !!!

Оказалось, что когда я собираю свой докер, я забываю поставить свое имя пользователя перед именем репо.

docker build docker-meteor-build 

(сборка успешно)

А затем, когда я перешел в свой репозиторий, я использовал

docker push myname/docker-meteor-build 

Он покажет unauthorized authentication required

Итак, решение - это имя сборки, и нажатие должно быть точно таким же

docker build myname/docker-meteor-build 
docker push myname/docker-meteor-build 

4

Проблема, с которой сталкиваются новички, заключается в том, что мы склонны относиться к репозиторию Docker Hub как к репозиторию maven и думать, что он может содержать много разных файлов, папок и другого содержимого.

С другой стороны, репозиторий докеров - это всего лишь один образ, он не содержит ничего другого. Он может содержать разные версии одного и того же изображения, но будет содержать только одно изображение.

Итак, назовите свой репозиторий в Docker Hub тем же именем, что и изображение, которое вы хотите вставить в него, и используйте свое имя пользователя dockerhub в качестве префикса. Например, если ваше имя пользователя - myusername, а имя вашего изображения - docker-whale , обязательно назовите свой репозиторий dockerhub как docker-whale и используйте следующие команды, чтобы пометить и отправить свое изображение в репозиторий:

docker logout                                   # to make sure you're logged out and not cause any clashes
docker tag <imageId> myusername/docker-whale    # use :1.0.0 for specific version, default is 'latest'
docker login --username=myusername              # use the username/pwd to login to docker hub
docker push myusername/docker-whale             # use :1.0.0 for pushing specific version, default is 'latest'

1
Я продолжал получать «отказано: запрошенный доступ к ресурсу запрещен», пока не увидел этот пост. Наконец, мне удалось заставить работать мой первый «docker-push» без помощи учебника. Огромное спасибо!
glendon 06

2

Если вы впервые отправляете новый частный образ, убедитесь, что ваша подписка поддерживает это дополнительное изображение.

Docker позволяет вам иметь 6 личных образов по имени, даже если вы платите только за 5, но не продвигать этот 6-й образ. Отсутствие информативного сообщения сбивает с толку и раздражает.


2

Вот решение для моего случая (частные репозитории, бесплатный тарифный план)

https://success.docker.com/Datacenter/Solve/Getting_%22unauthorized%3A_authentication_required%22_when_trying_to_push_image_to_DTR

Имя сборки образа для отправки должно совпадать с именем репозитория.

Пример: репозитории на концентраторе докеров: accountName / resposName имя сборки образа "accountName / resposName" -> docker build -t accountName / resposName

затем введите docker push accountName / resposName: latest

Вот и все.


Ссылка сейчас не работает. Пожалуйста, исправьте.
Эрик Болинджер

1

Для меня сработало создание нового репозитория и переименование изображения с помощью

$ docker tag image_id myname/server:latest


1

Убедитесь, что у вас есть больше слотов для личных изображений.

В моем случае я преобразовал пользователя в организацию, и он потерял одно бесплатное частное изображение, поэтому предыдущие нажатия, которые работали, больше не работали.


1

Моя проблема заключалась в неверном токене авторизации через 5 минут. Пуш из-за размера изображения занял более 5 минут.

Я исправил это, увеличив "Продолжительность токена авторизации" до 10 минут.

введите описание изображения здесь


Где вы нашли эту настройку? Я не мог его найти.
Vic Seedoubleyew

2
Мой прием, позволяющий избежать этой проблемы, заключался в запуске docker loginв другом окне терминала незадолго до завершения загрузки
Вик Сидублейью

@VicSeedoubleyew Admin Area -> Settings -> CI/CD -> Container Registry. Путь URL: /admin/application_settings/ci_cd.
Мануэль Шмитцбергер 08

Спасибо за ответ. Админка чего? Я не вижу ничего из этого на dockerhub
Вик Сидублью

Это для собственного экземпляра gitlab. Я не уверен, что вы можете настроить это на dockerhub.
Мануэль Шмитцбергер 08

0

Убедитесь, что имя вашего репозитория докеров совпадает с именем локального репозитория докеров. например, скажем, если ваше локальное репо имя "kavashgar / nodjsapp"

тогда у вас также должно быть имя репо "kavashgar" в докере


0

в вашем файле конфигурации ~ / .docker / config.json добавьте

{
        "auths": {
             "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "my_email@gmail.com"
                }
        }
}

где XXXXX - это кодировка base64 вашего имени пользователя: пароль (включен :) на https://hub.docker.com

в моем случае у меня была такая же ошибка с вытягиванием. проблема (под окнами) была спровоцирована двойным запущенным процессом докера, поэтому убейте их всех и перезапустите одну службу, и она работает.


0

Уже были хорошие ответы, но я хотел бы упомянуть об одном - вам НЕ нужно создавать репозиторий заранее, прежде чем отправлять его.

Проблема для меня заключалась в том, что я не установил правильное имя пользователя учетной записи, в которую вошел. Но как только правильное имя пользователя устанавливается перед изображением (например YOURNAME/YOURIMAGE) через его тег, вы можете нажать ее без создания нового хранилища заранее.

sudo docker tag IMAGE:VERSION USERNAME/IMAGE:VERSION
sudo docker push USERNAME/IMAGE:VERSION

0

Такая же проблема здесь, при нажатии изображения:

unauthorized: authentication required

Что я сделал:

docker login --username=yourhubusername --email=youremail@company.com

Что напечатано:

--email устарела (но вход в систему все равно прошел)

Решение: используйте последний синтаксис входа в систему.

docker login

Он будет запрашивать имя пользователя и пароль в интерактивном режиме. Тогда толчок изображения просто работает.

Даже после использования нового синтаксиса my ~/.docker/config.jsonвыглядит так после входа в систему:

{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "credsStore": "osxkeychain"
}

Таким образом, учетные данные находятся в связке ключей macOS.


0

Я получил аналогичную ошибку для sudo docker push / sudo docker pull в репозитории ecr. Это связано с тем, что aws cli установлен у моего пользователя (abc), а докер установлен у пользователя root. Я попытался запустить sudo docker push для моего пользователя (abc)

Исправлено, установив aws cli в корневом каталоге, настроив aws с помощью aws configure в корневом каталоге и запустите sudo docker push to ecr для пользователя root



0

Вы можете mv файл xxx / .docker / config.json где-нибудь для обработки. Затем попробуйте снова войти в систему, чтобы создать новый файл config.json.

#mv xx/.docker/config.json xx/.docker/config_old.json
#docker login https://index.docker.io/v1/
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: YOUR USERNAME
Password: YOUR PASSWORD
WARNING! Your password will be stored unencrypted in /xxx/.docker/config.json.
Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

0

Если ты бежишь windows 7 docker Registry

  1. Начало **Docker Quick Start terminal** запуск (этот терминал разрешает соединение), пока вы не нажмете изображения, токен будет оставаться в живых.
  2. Авторизоваться docker login
  3. Убедитесь, что вы пометили изображение именем пользователя

    docker build -f Dockerfile -t 'username'/imagename

  4. нажать изображение

    docker image push username/imagename

Примечание : имя изображения все в нижнем регистре


0

У меня была похожая проблема.

Error response from daemon: Get https://registry-1.docker.io/v2/hadolint/hadolint/manifests/latest: unauthorized: incorrect username or password

Я обнаружил, что даже если я успешно вхожу в систему с помощью docker loginкоманды, любое извлечение не удалось. Я попытался очистить, ~/.docker/config.jsonно ничего не улучшилось.

Заглянув в файл конфигурации, я увидел, что учетные данные были сохранены не там, а в файле "credsStore": "secretservice". В Linux это инструмент seahorseили Passwords and Keys. Я проверил там и очищаю все логины в докере. После этого новый логин в докере работал должным образом.


0

Я пробовал все методы, которые могу найти в Интернете, и потерпел неудачу. Затем я прочитал этот пост и почерпнул некоторые идеи из ответа @Alex. Затем я ищу "" credsStore ":" osxkeychain "", который используется в моем config.json. Я перехожу по этой ссылке https://docs.docker.com/engine/reference/commandline/login/, чтобы выйти из системы, а затем снова войти в систему. Наконец, я могу успешно продвигать свое изображение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.