відмовлено: запиту в доступі до ресурсу відмовлено: docker


372

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

denied: requested access to the resource is denied

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

Чи міг би хтось підказати мені щодо цієї проблеми? Будь-яка допомога буде вдячна.

Примітка. Я успішно увійшов у docker


Переконайтеся , що ви не робите цю помилку: stackoverflow.com/a/59626146/4954434
Jithin Павітран

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

Відповіді:


550

Можливо, вам доведеться переключити док-репо на приватне перед натисканням докера.

Завдяки відповіді, яку надав Дін Ву та коментарю компанії ses , перед тим, як натиснути, не забудьте вийти , а потім увійдіть із командного рядка на ваш обліковий запис док-центру

# you may need log out first `docker logout` ref. https://stackoverflow.com/a/53835882/248616
docker login

Згідно з документами :

You need to include the namespace for Docker Hub to associate it with your account.
The namespace is the same as your Docker Hub account name.
You need to rename the image to YOUR_DOCKERHUB_NAME/docker-whale.

Отже, це означає, що вам потрібно тегнути зображення перед натисканням:

docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

і тоді ви повинні мати можливість його натиснути.

docker push YOUR_DOCKERHUB_NAME/firstimage

43
Не для мене. Я спробував всі комбінації [host]/[namespace]/[repo]та все одно однакову помилку (тобто, у мене є організації та мій обліковий запис як простір імен). Навіть пробував docker login .... Я не можу натиснути: - |
nicerobot

1
Привіт, я дотримуюся вашої команди. Помилка --- Відповідь на помилку від демон: Немає такого зображення: ubuntu-nodejs: останнє
Yash,

34
Цю відповідь не слід було позначати як прийняту! Надане рішення очевидно не працює, як вказували інші.
SamDevx

6
У мене була така ж проблема, і виявилося, що я не ввійшов належним чином. "Логін докера" поводиться незручно, він показав "вхід вдався", навіть коли я ввів неправильний пароль. Тому для належного входу я використав "docker login <url> --username = <username>". Опублікувати це, "docker push" працював як очікувалося.
Девеш Чанклані

2
Ця відповідь не є повною і не спрацювала для мене. Компанія Venu S дала повну відповідь, яка вирішила цю проблему для мене.
rm.rf.etc

184

У мене виникло те саме питання, коли я брав курс для початківців докер. Я вирішив цю проблему, зробивши docker loginперед викликом докер.


8
FWIW, я отримую помилки отримання облікових даних про docker login. sudo docker loginпрацював на мене. Це дозволило мені підштовхнути своє приватне репо.
johnsampson

1
Мабуть, вебінар Докера застарів.
Luís de Sousa


80

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

Ось такі кроки, які працювали для мене:

1) Вхід у докер.

docker login -u sirimalla

2) Позначте побудову зображення

моє ім'я зображення тут: mylocalimage, і за замовчуванням він має тег: останнє
і моє ім'я користувача: sirimalla як зареєстрований у хмарі docker , і я створив публічне сховище з назвою: dockerhub

тому моє особисте сховище стає зараз: sirimalla / dockerhub, і я хочу натиснути своє зображення тегом:myfirstimagepush

Я позначив як нижче:

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3) Притиснув зображення до мого особистого сховища докерів, як показано нижче

docker push sirimalla/dockerhub:myfirstimagepush

І це успішно підштовхнулося до мого особистого докерського репо.


2
Ця відповідь вирішила мою проблему. Це має бути прийнятою відповіддю. Інша відповідь не повна і не спрацювала для мене. Наприклад, інша відповідь не згадує docker login. До тих пір, поки я не знав про це docker login.
rm.rf.etc

в загальному , ви повинні використовувати Sudo випереджаючи всі свої команди réf projectatomic.io/blog/2015/08 / ...
wmitchell


1
Це було цуценя.
Дейв Ходжкінсон

1
Так, ця відповідь лише вирішила мою проблему. Будь ласка, зверніться до цього, хто хоче вирішити це питання.
Maha Lak

42

Важливо також зазначити, що під час тегування свого зображення ви додаєте тег за допомогою простору імен, а потім у сховище / mydevrepo . Це збентежило мене, коли слідкували за документами Docker. Після цього я використав:

docker login

А потім я натиснув своє Зображення, використовуючи "позначене ім'я" .

docker push {namespace}/mydevrepo

39

Використовуйте команди нижче:

$ docker login
<enter user name and password for Docker Hub Repository>

$ docker tag first-image {docker-hub-username}/{default-repo-folder-name}:first-image

$ docker push {docker-hub-username}/{default-repo-folder-name}:first-image

наприклад, у мене є загальнодоступне сховище типу manjeet86 / docker-repo, тому команди будуть:

$ docker tag first-image manjeet86/docker-repo:first-image

$ docker push manjeet86/docker-repo:first-image

Подивіться, :замість /цього була хитрість. Це працює для мене. Я не знаю, чи дозволяє вам тегнути /також на місці, :але це може бути з якоюсь іншою метою.

https://docs.docker.com/engine/reference/commandline/tag/#examples


1
Це те, що працювало для мене, використовуючи :замість /, дякую.
Кріс

Можливе пояснення проблеми в цій темі: github.com/moby/moby/isissue/31760#issuecomment-309812486
gp.

Спасибі, це було все. Має бути прийнята відповідь imho :)
Nk54

10

Те, як докер обробляє ідентифікатори користувачів та сховища, може бути дещо заплутаним. Скажімо, ви створили обліковий запис користувача xyz на докер-хабі. Новий обліковий запис автоматично встановлює простір імен xyz. Потім ви створюєте сховище під назвою myrepo. Фактично назва сховища буде xyz/myrepo.

Щоб натиснути зображення, слід зробити:

docker push docker.io/xyz/myrepo

Ви можете додати ": останнє" або інший тег, якщо необхідно.

Якщо ви отримаєте requested access to the resource is deniedповідомлення про помилку:

  1. Перейдіть на сторінку https://hub.docker.com/ та увійдіть як xyz.
  2. Клацніть на вашому сховищі xyz / myrepo.
  3. Клацніть на Співробітники.
  4. Додайте xyz як співавтора.

Отже, це означає, що ми не можемо висувати зображення з громадського сховища сторонніх розробників?
sdinesh94

Не працювали для мене :(
Nom1fan

10

Не впевнений, що сталося з докер-хабом, але жодне з розміщених рішень не працювало на мене. Ось обробка, яка закінчилася для мене станом на січень-2018:

  1. Перейдіть на hub.docker.com і змініть сховище на приватне
  2. У своїй оболонці зробіть:

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE verse_gapminder_gsl latest 023ab91c6291 3 minutes ago 1.975 GB verse_gapminder latest bb38976d03cf 13 minutes ago 1.955 GB rocker/verse latest 0168d115f220 3 days ago 1.954 GB

docker tag bb38976d03cf dockhubusername/verse_gapminder:mytag

docker login docker.io

docker push dockhubusername/verse_gapminder:mytag

  1. Поверніться до докерного центру та змініть репо-версію на загальнодоступну. Це працювало для мене.

8

Docker також обмежує кількість приватних сховищ, які ви можете мати. Якщо ви створюєте приватне сховище, натискаючи з локальної машини, воно створить сховище, але більше нічого не можна буде на нього наштовхувати або витягувати, і ви отримаєте помилку "запиту у доступі до ресурсу відмовлено".


як завжди просуватися як публічне репо?
Раджа Анбаджаган

7

ОС: Ubuntu16.04

Причина: я видалив файл конфігурації клієнта ( ~ / .docker / config.json )

Рішення:

  • Перезавантажте докер.
    перезапуск сервера .
  • Для цього потрібно ввести інформацію про вхід, а потім автоматично генерує конфігураційний файл.
    вхід докера --username = yourdockerhubername --email=youremail@company.com

1
Це було єдине рішення, яке працювало на мене. Я оновив свій Docker, а потім чомусь mvn dockerfile: push не вдалося за цим винятком. Видалення цього config.json виправлено.
anand1st

Це мені теж допомогло. Я зрозумів, що для входу в систему я або не повинен ставити URL-адресу, або якщо мені потрібно вказати URL-адресу докер-центру, я повинен поставитиdocker login https://index.docker.io/v1/ -u=yourusername
Ronan Quillevere,

7

У моїй проблемі було дуже просто використання недійсних символів (додатково /) у моєму імені зображення:

myusername/something/image

- недійсне ім’я зображення. Спробуйте своє ім’я користувача / щось-зображення. Сподіваюся, що це комусь допоможе.


Таке жахливе, невизначене повідомлення про помилку! Я робив те саме. Крім того, це не дозволить повторити спеціальні символи , наприклад __.
ійосеф

Це працює для мене, дякую!
Кенні Лі

6

У мене було таке ж питання і сьогодні. Єдине, що працювало для мене, - це явно увійти в "docker.io" :

docker login docker.io

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

запиту в доступі до ресурсу відмовлено


2
Це також вирішило для мене питання. Я намагався docker loginбез успіху, але явна docker.ioв кінці зробила трюк.
жартує

Це було для мене
Глітчер

явний вхід в docker.io не працював для мене. Логін працював у минулому, перестав працювати зараз.
rhoerbe

5

Я був і з цим питанням, я протестував рішення, які існують тут, але безрезультатно, я був належним чином увійшов до системи, принаймні відповідно до результатів, docker loginале все-таки не зміг підштовхнути зображення. Що, нарешті, працювало, це було просто зробити:

docker logout

І docker loginзнову ж таки, це було те банальне. Я не впевнений, що сталося, але примусовий повторний вхід спрацював.


1
Це мені теж допомогло!
Левенте Орбан

1
Так, з виходом із системи, він знову працює для мене. Дякую!
Нам Г ВУ

4

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

docker login yourregistry.azurecr.io

А потім позначте своє зображення, щоб воно відповідало імені хосту вашого реєстру.

docker image tag yourimagename:[version] yourregistry.azurecr.io/yourimagename:[version]

А потім нарешті штовхнути його.

docker push yourregistry.azurecr.io/yourimagename:[version]

1
Порадуючи з Azure, саме це допомогло! Першою частиною тегу є не простір імен, а ім'я хоста реєстру!
бінаргуй

4

Для тих, хто намагається натиснути зображення на свій власний диспетчер Nexus Repository, виконайте наступне:

1) Увійдіть до свого менеджера сховищ Nexus (Порт 8443 асоційований із певним сховищем хостів Docker)

sudo docker login xxx.mydomain.com:8443

2) Позначте зображення за допомогою IP / DNS ВАШОГО СЕРВЕРА NEXUS

sudo docker tag myimage:latest xxx.mydomain.com:8443/myimage:1.0.0

3) Натисніть на зображення

sudo docker push xxx.mydomain.com:8443/myimage:1.0.0

У мене виникла проблема з плагіном docker для jenkins, який завжди переглядав docker.io. Позначивши проблему xxx.mydomain.com:8443/myimage:1.0.0 вирішив проблему. Не забудьте пропустити прокотол та / v2 / речі.
Himmet Avsar

чому додати порт. І чий порт додати поблизу xxx.mydomain.com. 8443 - це весільний черевик для https. Що робити, якщо це кутове застосування
P

1
@PSatishPatro Коли ваш сховище вирішиться на певний http / https-порт, тег повинен знати, куди його натиснути (оскільки ви насправді не вказуєте, куди піти - як параметр), як згадувалося вище, він повинен бути точний URL як ваше повне сховище Nexus.
Філ


3

Просте робоче рішення:

Перейдіть сюди, https://hub.docker.com/щоб створити ПРИВАТНЕ сховище з назвою, наприклад, johnsmith/private-repositoryце NAME/REPOSITORYви будете використовувати для свого зображення під час створення зображення.

  • Спочатку, docker login

  • По-друге, я використовую " docker build -t johnsmith/private-repository:01 ." для створення зображення, і використовую " docker images" для підтвердження створеного зображення, наприклад, у цьому жовтому полі нижче: (вибачте, я не можу вставити формат таблиці, а лише текстовий рядок)

johnsmith / private-repository (REPOSITORY) 01 (TAD) c5f4a2861d6e (ID зображення) 2 дні тому (СТВОРЕНО) 305MB (РОЗМІР)

  • По-третє, я використовую docker push johnsmith/private-repository:01

Готово!


2

Моя відповідь пов'язана з аналогічними проблемами Azure DevOps, які виникли у мене із наступним загальним конвеєром (він більш конкретний, але це може допомогти комусь заощадити час):

  1. Отримайте джерела з github
  2. Побудувати зображення докера
  3. Натисніть на зображення докера до dockerhub

Помилка, яку я отримав при натисканні denied: requested access to the resource is denied надіслав мене сюди.

Будьте уважні до змінної, що $(Build.Repository.Name)міститься у вашому імені зображення. За замовчуванням це ім’я сховища від github, але для вашого натиску це повинно бутиdockerhub_account_username/your_dockerhub_repository_name .

Замініть $(Build.Repository.Name)наdockerhub_account_username/your_dockerhub_repository_name в вашому зображенні поле Ім'я для обох збірки і кнопкових кроків.

Для цього потрібен апікер докерхуб, щоб знати, куди натиснути зображення.


2

Це спрацювало після того, як я змінив " вхід докер https://hub.docker.com " на " докер вхід docker.io " та ім'я користувача та пароль.

Потім виконайте команди нижче:

docker tag local-image:tagname new-repo:tagname

docker push new-repo:tagname

ПРИМІТКА: "new-repo" міститиме "Docker ID + ім'я Repo"

Тут я створив репо "ubuntu" в Docker Hub перед запуском команди нижче.

Приклад:

docker tag alok/ubuntu:latest aloktiwari2007/ubuntu:latest

docker push aloktiwari2007/ubuntu:latest

Важливим моментом для мене було теговане ім'я в команді docker tag, яке повинно бути таким: <dockeruserid> / <ім'я віддаленого сховища>: <тег>. Той самий ідентифікатор тегу повинен використовуватися в push-команді.
Tanmay Patil

1

Якщо це все-таки не вдається docker login, переконайтеся, що сховище, до якого ви намагаєтесь натиснути, створене в першу чергу.


1

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


1

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

тому моя команда push: docker push org-name/image-name

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

Рішення полягало в тому, щоб видалити репо з док-хабу та знову натиснути свіжим за допомогою: docker push org-name/image-name

Наскільки це варте, я вважаю, що РЕПО спочатку було висунуто до того, як обліковий запис було перетворено на організацію.


1

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

  • У мене в тестовій мережі був комп'ютер під назвою "галактика".
  • Я встановлюю реєстр докера за допомогою наступної команди run:

    sudo docker run -d 
    --restart=always \
    --name registry \
    -v /srv/registry/certs:/certs \
    -v /srv/registry/storage:/var/lib/registry \
    -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/galaxy.cert \
    -e REGISTRY_HTTP_TLS_KEY=/certs/galaxy.key \
    -p 443:443 \
    registry:2
    

    Тоді я намагався підштовхнути зображення до галактики з ноутбука в мережі, тому я зробив це:

    docker login galaxy
    

    Це призведе до помилки, яка б сказала:

    Login did not succeed, error: Error response from daemon: 
        Get https://galaxy/v2/: x509: certificate signed by unknown authority
    

    Як не дивно, виправлення цього питання полягало в тому, щоб зробити такий логін:

    docker login galaxy:443
    

    Це призвело до успішного входу в систему.

    Тоді я спробував натиснути зображення зі свого ноутбука на «галактику».
    Я вже створив тег для свого зображення, який виглядав так:

    galaxy/myImage:0.0.1
    

    Тому я спробував підштовхнути це, роблячи це:

    docker push galaxy/myImage:0.0.1
    

    На що я отримав відповідь:

    The push refers to repository [docker.io/galaxy/myImage]
    7ab460574f86: Preparing 
    1aecaf56754d: Preparing 
    1df1b5f06ca4: Preparing 
    denied: requested access to the resource is denied
    

    Як не дивно, я виявив, що для цього потрібно виправити тег:

    docker tag myImage:0.0.1 galaxy:443/myImage:0.0.1
    

    ... а потім натисніть так:

    docker push galaxy:443/myImage:0.0.1
    

    Тож мені чомусь довелося включати порт у тег як обов'язкову частину назви сховища.



    Сподіваюся, що це допомагає іншим.


  • 1

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

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

    джерело: https://gitlab.com/help/user/project/container_registry#using-with-private-projects

    сподіваюся, що це буде корисно (також якщо питання буде розміщено поки що в часі)


    1

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

    Я не точно впевнений, як мені вдалося створити занадто багато приватних репостів, але якщо мій план включає 5 приватних репостів, а я якось маю 6, то це помилка, яку я отримаю:

    denied: requested access to the resource is denied

    У моєму випадку можливо, що в мене було занадто багато приватних сховищ, тому що для моєї видимості за замовчуванням встановлено приватне:

    Видимість за замовчуванням

    Тут ви визначаєте, скільки приватних репостів ви можете мати:

    Плани рахунків

    Як тільки я оприлюднив проблематичне репо, питання стало очевидним:

    Зробіть сховище приватним 5 із 5


    1

    Я дуже сподіваюся, що це допоможе комусь (хто спочатку дивиться на остаточні відповіді як я):

    Я постійно намагався набрати текст

    docker push user/repo/tag
    

    Натомість

    docker push user/repo:tag
    

    Оскільки я також зробив свій тег так:

    docker tag image user/repo/tag
    

    ... все пекло прорвалося.

    Дуже сподіваюся, ви не повторите мою помилку. Я витрачав, як 30 хвилин на цьому ...


    1

    Я повільно додаю ще одну відповідь, але прийнята відповідь та решта відповідей, що згадуються docker login, не мають кращого випадку для вирішення питань, які інші висловлюють у коментарях.

    docker login <private-repo-host>:<port>

    Наголос на portнеобхідності ввести, ймовірно, рішення для тих, хто все ще шукає. docker loginабо docker login <private-repo-host>може підключитися без проблем, але коли настане час наштовхувати зображення, ви отримаєте ту ж помилку, що й ОП.

    Тобто ви можете підключити без визначення хост або порт і все одно отримати:

    ...

    Вхід успішно виконано

    У моєму випадку я використовую вбудований GitLab власного вбудованого докер-реєстру, який був налаштований на використання порту 4567. Може бути доречним перевірити, з якого порту повинен бути доступ до реєстру. Не вказуючи вказаний порт docker login <our.gitlab.host>, вхід буде успішним, але надайте ту саму проблему, яку ОП запитувало про:

    ...

    Натиск відноситься до сховища [...]

    відмовлено: доступ заборонений

    Якщо ви використовуєте docker.io/dockerhub, ви, ймовірно, не матимете цієї проблеми, але якщо у вас є рішення про власний / приватний реєстр, ймовірність збільшується, вам потрібно чітко увійти, використовуючи хост і порт для реєстру докера. .


    Дякую, найкорисніше!
    Альфабраво

    1

    Не дозволяйте вводити в оману назву тегу.
    Мій підхід до вирішення цього питання:

    Command 1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/trys:1.0 (Didn't push)
    Command 2(Push): docker push rsachde/nginx-repository/try:1.0 
    

    Вихід:

    відмовлено: запитується доступ до ресурсу


    Command 1.1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/:trys 
    Command 2.2(Push): docker push rsachde/nginx-repository:trys 
    

    Вихід:

    проб: дайджест: sha256: 405b6f0ae25772ef71b8f59fd6a56ff9b426f50bd24bac2b5db41f65efd3387c розмір: 1365

    Оманливим є тег, переконайтеся, що ви це розумієте.


    1

    найпростіше використовувати робочий стіл docker (для Windows 10 або вище та Mac)

    Перша реєстрація в докер-центрі, надавши dockerID

    потім натисніть значок робочого столу докера на вашій машині та -> Налаштування ->, а потім увійдіть до нього, використовуючи докер-центр docker / id та пароль.

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


    0

    перейменуйте своє зображення на ім'я користувача / image-name docker tag ваш-current-image / current-image dockerhub-username / some-name: your-tag (приклад: останнє)


    0

    Спробуйте вийти з програми "Докер для Windows" та вийдіть із сайту https://hub.docker.com/ та виконайте "вхід в докер" та "поштовх докера". Це мені допомогло.

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