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


99

Під час відштовхування зображення докера (після успішного входу в систему) від мого хоста я отримую "несанкціонований: потрібна автентифікація".

Деталі нижче.

-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-kit).

/ 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
Було б корисно адміністратору сайту, а також іншим, хто шукає інформацію про ту ж проблему, якщо ви натиснете галочку біля своєї відповіді, щоб позначити її як "відповідь" :-) Вам дозволяється (навіть заохочується) робити це на стеку переповнення.
Сінді Майстер

Відповіді:


87

Редагувати (13.08.2017)

На основі коментаря @ KaraPirinc у докерній версії 17 для входу (крок 1),

docker login -u username -p password

У мене теж було таке саме питання. Це, як я вирішую це питання.

Крок 1: увійдіть у центр докерів

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

Крок 2: створіть сховище в докерному концентраторі . скажімо, " mysqlserver: sql ".

docker push <user username>/mysqlserver:sql

7
Це має бути правильна відповідь . docker loginтакож працює без
парам

5
Працює чудово. Однак, --пошта була застарілою .
ІгорГанапольський

(версія докера 17): вхід докер -u ім'я користувача -p
Yusuf Ismail Oktay

дякую за оновлення Я оновлю відповідь на основі вашого коментаря.
GPrathap

34

Розміщене вами рішення не працює для мене ...

Ось що для мене працює:

  1. Створіть сховище з потрібною назвою.

  2. Здійснюючи зображення, назвіть його як сховище, включаючи ім'я користувача <dockerusername>/desired-name. Наприклад, radu/desired-name.


# docker ps - отримайте ім'я 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"
                }
        }
}

до - відзначте зміну від 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

17

якщо ви використовуєте heroku, переконайтесь, що ви не забули "heroku контейнер: увійти" перед натисканням.


7

Я зіткнувся з подібною проблемою із аналогічним невідповідним повідомленням про помилку, але виявилося це тому, що я намагався висунути зображення, створене проти екземпляра, керованого докер-машиною.

Коли я ввійшов у сам екземпляр, зробив docker loginі docker pushвсе спрацювало нормально.


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

7

У мене була така ж проблема, але я виправив її з натисканням із вказаною URL-адресою. як: вхід докер -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

Проблема, яка стикається з новичками, полягає в тому, що ми схильні трактувати сховище докерних центрів так само, як сховище Maven і думаємо, що воно може містити багато різних файлів, папок та іншого вмісту.

З іншого боку, сховище докерів - це лише одне зображення, воно не містить нічого іншого. Він може містити різні версії одного і того ж зображення, але він містить лише одне зображення.

Отже, назвіть своє сховище на докер-хабі тим самим іменем, що і зображення, яке ви хочете вставити в нього, і використовуйте своє ім'я dockerhub як префікс. Для наприклад, якщо ваше ім'я користувача MyUserName і ваше ім'я зображення докер-кит , переконайтеся , що ім'я вашого сховища dockerhub як докер-кит і використовувати такі команди для тега і натиснути зображення в сховище:

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
Мені не доводилося отримувати "відмову: запиту в доступі до ресурсу заборонено", поки я не побачив цю публікацію. Нарешті, мені вдалося змусити мого першого "докер-натискання" працювати, не будучи підручником. Дякую купу!
Глендон

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

Ім'я побудови зображення для натискання має мати те саме ім’я репостів.

Приклад: repos на докер-концентраторі: accountName / resposName назва збірки образу "accountName / resposName" -> docker build -t accountName / resposName

потім введіть docker push accountName / resposName: останнє

Це все.


Зараз посилання розірвано. Виправте це.
Ерік Болінджер

1

Що для мене працювало - створити новий сховище та перейменувати зображення

$ docker tag image_id myname/server:latest


1

Переконайтеся, що у вас є більше слотів для приватних зображень.

У моєму випадку я перетворив користувача в організацію, і він втратив це один безкоштовний приватний образ, тому попередні поштовхи, які спрацювали, більше не працювали.


1

Моєю проблемою був недійсний маркер авторизації через 5 хвилин. Через розмір зображення натиск зайняв більше 5 хвилин.

Я виправив це, збільшивши "Тривалість маркера авторизації" до 10 хвилин.

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


Де ви знайшли цей параметр? Я не міг його знайти.
Вік Седублеєв

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

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

Дякую за відповідь. Область адміністратора що? Я нічого такого не бачу на dockerhub
Вік Седоблеєв,

Це для власного екземпляра gitlab. Я не впевнений, чи можете ви налаштувати це на dockerhub.
Мануель Шмітцбергер

0

Переконайтесь, що ваше сховище докер-сховища відповідає вашому місцевому імені доке-репо. Наприклад, скажімо, якщо ви називаєте місцевий репо-назву "kavashgar / nodjsapp"

то у вашому док-хабі також повинні бути назви repo "kavashgar"


0

у вашому файлі конфігурації ~ / .docker / config.json add

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

де XXXXX - це базове кодування для вашого імені користувача: пароль (додається: включено) 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

Що вона надрукувала:

- електронна пошта застаріла (але вхід все-таки вдалося)

Рішення: використовуйте останній синтаксис входу.

docker login

Він запитуватиме ім’я користувача та пароль інтерактивно. Тоді натискання зображення просто працює.

Навіть після використання нового синтаксису моє ~/.docker/config.jsonвиглядає так після входу в систему:

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

Отже, обліковий запис знаходиться в брелоку macOS.


0

Я отримав аналогічну помилку для дозволу dodo push / sudo docker тягнути до сховища ecr. Це тому, що Aws cli встановлений у моєму користувачеві (abc) і докер встановлений у root користувачі. Я намагався запустити sudo docker push на моєму користувачеві (abc)

Виправлено це за допомогою встановленого Aws cli в root, налаштованого Aws за допомогою aws configure в root та запуску sudo docker push для 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. push зображення

    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інструментом. Я перевірив там і очищую всі вхідні дані док-центру. Після цього новий вхід докер працював, як очікувалося.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.