отказано: запрошенный доступ к ресурсу запрещен: docker


372

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

denied: requested access to the resource is denied

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

Может ли кто-нибудь дать мне подсказку об этой проблеме? Любая помощь будет оценена.

Примечание: я успешно вошел в докер


Убедитесь, что вы не делаете эту ошибку: stackoverflow.com/a/59626146/4954434
Джитин Павитран

Убедитесь, что вы подтвердите свой адрес электронной почты. Если вы думаете, кто сделал бы такую ​​глупость, я не подтвердил свою электронную почту, прежде чем нажать.
Luv33preet

Ответы:


553

Возможно, вам придется переключить ваш репозиторий Docker на частный, прежде чем Docker Push.

Благодаря ответ предоставленного Дин В и этот комментарий по 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
hii Я следую вашей команде, получил ошибку --- Ответ об ошибке от демона: Нет такого образа: ubuntu-nodejs: последний
Yash

34
Этот ответ не должен быть помечен как принятый! Представленное решение явно не работает, как указали другие.
SamDevx

6
У меня была та же проблема, и оказалось, что я не вошел в систему должным образом. «Вход в докер» ведет себя неловко, он показывает, что «вход выполнен успешно», даже когда я ввел неправильный пароль. Поэтому для правильного входа в систему я использовал «docker login <url> --username = <username>». Размести это, "Docker Push" работал как положено.
Девеш Чанчлани

2
Этот ответ не является полным и не работает для меня. Venu S дал полный ответ, который решил эту проблему для меня.
rm.rf.etc

184

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


9
FWIW, я получаю ошибки получения учетных данных о docker login. sudo docker loginработал на меня. Это позволило мне подтолкнуть мой личный репо.
Johnsampson

2
Судя по всему, вебинар Docker устарел.
Луис де Соуза


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
Да, этот ответ только решил мою проблему. Пожалуйста, обратитесь к этому, кто хочет решить эту проблему.
Маха Лак

42

Также важно отметить, что когда вы помечаете свое изображение, вы помечаете его, используя Пространство имен, а затем свой репозиторий / mydevrepo . Это смутило меня, когда я следовал за Докером. После этого я использовал:

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/issues/31760#issuecomment-309812486
gp.

Спасибо, вот и все. Должен быть принят ответ imho :)
Nk54

10

То, как docker обрабатывает идентификаторы пользователей и репозитории, может немного сбивать с толку. Допустим, вы создаете учетную запись пользователя xyz в Docker Hub. Новая учетная запись автоматически устанавливает пространство имен 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. Вернитесь в Docker Hub и измените репо на общедоступный. Это сработало для меня.

8

Docker также имеет ограничение на количество личных репозиториев, которые вы можете иметь. Если вы создаете частный репозиторий нажатием с вашего локального компьютера, он создаст репозиторий, но больше ничего нельзя перенести на него или извлечь из него, и вы получите ошибку «запрошенный доступ к ресурсу запрещен».


как всегда пушить как публичный репо?
Раджа Анбажаган

7

ОС: Ubuntu16.04

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

Решение:

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

1
Это было единственное решение, которое сработало для меня. Я обновил свой Docker, а затем по какой-то причине mvn dockerfile: push завершился неудачей с этим исключением. Удаление этого config.json исправило это.
сентября

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

7

Моя проблема заключалась в простом использовании недопустимых символов (лишних /) в имени моего изображения:

myusername/something/image

неверное имя изображения Попробуйте myusername / что-то изображение. Надеюсь, это кому-нибудь поможет.


Такое ужасное, неопределенное сообщение об ошибке! Я делал то же самое. Кроме того, это не позволит повторять специальные символы , например __.
Иосиф

Это работает для меня, спасибо!
Кенни Ли

6

У меня была такая же проблема сегодня. Единственное, что сработало для меня, это явный вход в «docker.io» :

docker login docker.io

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

Запрошенный доступ к ресурсу запрещен


2
Это также то, что решило проблему для меня. Я попытался docker loginбезуспешно, но явное docker.ioзавершение сделало свое дело.
шутки

Это было для меня
Глитчер

явный вход в docker.io у меня не сработал. Логин работал в прошлом, перестал работать сейчас.
rhoerbe

5

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

docker logout

И docker loginопять же, это было так тривиально. Я не уверен, что случилось, но принудительный повторный вход сработал.


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

1
Да, с выходом из системы, он снова работает на меня. Спасибо!
Nam G VU

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, сделайте следующее:

1) Войдите в свой менеджер репозитория Nexus (порт 8443 связан с определенным репозиторием хоста Docker)

sudo docker login xxx.mydomain.com:8443

2) Пометьте изображение СВОИМ NEXUS SERVER IP / DNS

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

У меня была проблема в плагине док-станции jenkins, который всегда ссылался на docker.io. Использование тегов xxx.mydomain.com:8443/myimage:1.0.0 решило проблему. Обязательно пропустите procotol и / v2 / stuff.
Химмет Авсар

зачем добавлять порт. И чей порт добавить рядом с xxx.mydomain.com. 8443 для весенней загрузки https. Что делать, если это угловое приложение
P Satish Patro

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


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в вашем изображении поле Имя для обоих сборки и кнопочных шагов.

Это необходимо для dockerhub api, чтобы знать, куда нажать изображение.


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 name»

Здесь я создал репо "Ubuntu" в Docker Hub перед запуском команды ниже.

Пример:

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

docker push aloktiwari2007/ubuntu:latest

Важным моментом для меня был тэг в команде тэга docker, он должен быть следующим - <dockeruserid> / <имя удаленного репозитория>: <тэг>. Тот же идентификатор тега должен использоваться в команде push.
Танмай Патил

1

Если после этого все равно не получится docker login, убедитесь, что хранилище, к которому вы пытаетесь добавить, было создано в первую очередь.


1

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


1

В моем случае я подталкивал к организации, где я в команде, у которой есть права администратора для хранилища.

поэтому моя команда push была: docker push org-name/image-name

Я мог успешно нажать на имя пользователя / имя-изображения, но не на организацию. Я трижды проверил разрешения. Ничего не получалось.

Решение состояло в том, чтобы удалить репо из концентратора докеров и снова нажать заново, используя: docker push org-name/image-name

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


1

Итак, если это полезно для всех ... У
меня была такая же проблема, и вот какова была моя проблема и FIX.

  • У меня был компьютер в моей тестовой сети под названием «галактика».
  • Я настраиваю реестр Docker, используя следующую команду запуска:

    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> может подключиться без проблем, но когда придет время выдавать изображения, вы получите ту же ошибку, что и OP.

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

    ...

    Войти успешно

    В моем случае я использую встроенный в GitLab Docker-Registry, который был настроен на использование порта 4567. Может быть полезно проверить, с какого порта должен быть получен доступ к реестру. Без указания указанного порта docker login <our.gitlab.host>будет успешным вход в систему, но возникнет та же проблема, о которой спрашивал OP:

    ...

    Толчок относится к хранилищу [...]

    отказано: доступ запрещен

    Если вы используете docker.io/dockerhub, у вас, скорее всего, не возникнет этой проблемы, но если у вас есть собственное / частное решение для реестра, вероятность возрастает, вам нужно явно войти в систему, используя хост и порт для реестра Docker. ,


    Спасибо, самое полезное!
    Альфабраво

    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 
    

    Вывод:

    trys: digest: sha256: 405b6f0ae25772ef71b8f59fd6a56ff9b426f50bd24bac2b5db41f65efd3387c размер: 1365

    Вводит в заблуждение тег, убедитесь, что вы понимаете это.


    1

    Самый простой способ - использовать Docker Desktop (для Windows 10 или выше и Mac).

    Первая регистрация в Docker Hub путем предоставления dockerID

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

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


    0

    переименуйте ваше изображение в docker имя пользователя / изображение-имя тега ваше текущее изображение / текущее изображение dockerhub-имя пользователя / некоторое имя: ваш тег (пример: последний)


    0

    Попробуйте выйти из приложения «Docker для Windows» и выйти с сайта https://hub.docker.com/, а затем выполнить «вход в Docker » и «push- уведомление Docker ». Это помогло мне.

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