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

denied: requested access to the resource is denied

enter image description here

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

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

Keyur Shah

Ответов: 54

Ответы (54)

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

Благодаря ответу предоставленному Dean Wu и этот комментарий by ses, перед нажатием не забудьте записать log out, затем войдите из командной строки в свою учетную запись Docker Hub

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

Согласно docs:

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

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

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

Вот шаги, которые у меня сработали:

1) Авторизуйтесь в докере.

docker login -u sirimalla

2) Пометьте сборку вашего образа

мое имя изображения здесь: mylocalimage и по умолчанию у него есть тег: последний
и мое имя пользователя: sirimalla, зарегистрированное в облаке докеров, и я создал общедоступный репозиторий с именем: dockerhub

, так что теперь мой личный репозиторий становится: sirimalla / dockerhub и я хочу отправить свое изображение с тегом: myfirstimagepush

Я отметил, как показано ниже:

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3) Отправил образ в мой личный репозиторий докеров, как показано ниже

docker push sirimalla/dockerhub:myfirstimagepush

И он успешно помещен в мой личный репозиторий докеров.

Способ, которым docker обрабатывает идентификаторы пользователей и репозитории, может немного сбивать с толку. Предположим, вы создали учетную запись пользователя xyz в Docker Hub. Новая учетная запись автоматически устанавливает пространство имен xyz. Затем вы создаете репозиторий под названием myrepo. Имя репозитория на самом деле будет xyz / myrepo.

Чтобы протолкнуть изображение, вы должны сделать:

docker push docker.io/xyz/myrepo

You can add ":latest" or a different tag if necessary.

Если вы получите запрошенный доступ к ресурсу запрещен сообщение об ошибке:

  1. Перейдите на https://hub.docker.com/ и войдите как xyz.
  2. Щелкните по своему репозиторию xyz / myrepo.
  3. Нажмите «Соавторы».
  4. Добавить xyz в качестве соавтора.

Войдите в систему из приложения. Я пытался только с терминала безуспешно.

Это версия 17.06.1

enter image description here

Используйте следующие команды:

$ docker login


$ 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

Простое рабочее решение:

Перейдите сюда https://hub.docker.com/, чтобы создать ЧАСТНЫЙ репозиторий с именем, например, johnsmith / private-repository это NAME / REPOSITORY, которое вы будете использовать для ваше изображение при построении изображения.

  • Сначала логин в докере

  • Во-вторых, я использую «docker build -t johnsmith / private-repository: 01.» для создания образа, и я использую «docker images» для подтверждения изображение, созданное, например, в этом желтом поле ниже: (извините, я не могу вставить формат таблицы, а только текстовую строку)

johnsmith / private-repository (REPOSITORY) 01 (TAD) c5f4a2861d6e (IMAGE ID) 2 дня назад (CREATED) 305MB (SIZE)

  • В-третьих, я использую docker push johnsmith / private-repository: 01

Готово!

Другая (довольно умная) причина: у вас закончились частные репозитории с вашим планом.

После входа в докер вам нужно назвать свое изображение с префиксом.

например. если ваше имя пользователя в docker-hub Shah, образ должен быть:

Shah/firstimage

Итак, если это кому-то поможет ...
У меня была такая же проблема, и вот в чем была моя проблема и ИСПРАВЛЕНИЕ.

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

    sudo docker run -d
    --restart = всегда \
    --name registry \
    -v / SRV / реестр / сертификаты: / сертификаты \
    -v / SRV / реестр / хранилище: / 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 \
    реестр: 2
    

    Затем я пытался отправить изображение в галактику с ноутбука в сети, поэтому я сделал следующее:

    галактика входа в докер
    

    Это дало бы мне сообщение об ошибке:

    Не удалось войти в систему, ошибка: ответ от демона об ошибке:
        Получить https://galaxy/v2/: x509: сертификат, подписанный неизвестным органом
    

    Как ни странно, исправление этой проблемы заключалось в следующем:

    галактика входа в докер: 443
    

    Это привело к успешному входу в систему.

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

    галактика / myImage: 0.0.1
    

    Итак, я попытался подтолкнуть его, сделав это:

    docker push galaxy / myImage: 0.0.1
    

    На что получил ответ:

    Отправка относится к репозиторию [docker.io/galaxy/myImage]
    7ab460574f86: Подготовка
    1aecaf56754d: Подготовка
    1df1b5f06ca4: Подготовка
    denied: запрошенный доступ к ресурсу запрещен
    

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

    тег докера myImage: 0.0.1 galaxy: 443 / myImage: 0.0.1
    

    ... а затем нажмите вот так:

    docker push galaxy: 443 / myImage: 0.0.1
    

    Так что по какой-то причине мне пришлось включить порт в тег как обязательную часть имени репозитория.



    Надеюсь, это поможет другим.

  • Не уверен, что случилось с докер-хабом, но ни одно из опубликованных решений не помогло мне. Вот обходной путь, который сработал для меня по состоянию на январь 2018 года:

    1. Перейдите на сайт hub.docker.com и измените свой репозиторий на частный
    2. В вашей оболочке выполните:

    образы докеров

    РАЗМЕР ИЗОБРАЖЕНИЯ ИДЕНТИФИКАЦИИ ИЗОБРАЖЕНИЯ РЕПОЗИТОРИИ verse_gapminder_gsl последнее 023ab91c6291 3 минуты назад 1,975 ГБ verse_gapminder последнее bb38976d03cf 13 минут назад 1,955 ГБ рокер / стих последняя 0168d115f220 3 дня назад 1.954 ГБ

    тег докера bb38976d03cf dockhubusername / verse_gapminder: mytag

    docker логин docker.io

    docker push dockhubusername / verse_gapminder: mytag

    1. Вернитесь в Docker Hub и снова сделайте репозиторий публичным. У меня это сработало.

    Для тех, кто пытается отправить изображение в свой собственный диспетчер репозиториев Nexus, выполните следующие действия:

    1) Войдите в свой Nexus Repository Manager (порт 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 push user/repo/tag
    

    Вместо

    docker push user/repo:tag
    

    Так как я тоже сделал свой тег так:

    docker tag image user/repo/tag
    

    ... все кончилось проигрывать.

    Искренне надеюсь, что вы не повторите мою ошибку. Я потратил на это 30 минут ...

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

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

    В моем случае я создал общедоступные репозитории с помощью веб-консоли до отправки изображений.

    Параметры входа в Docker в ~ / .docker / config.json должны быть правильно установлены (что выполняется автоматически после входа в систему)

    1) Вход без передачи СЕРВЕР параметр:

    $ echo "" | docker login -u foo --password-stdin
    

    После успешного входа в систему это приводит к следующему: ~ / .docker / config.json и нажатие изображения успешно.

    ***
    "https://index.docker.io/v1/": {
        "auth": "YWNhcm***"
    }
    ***
    

    2) Войти с передачей параметра SERVER как index.docker.io

    $ echo "" | docker login index.docker.io -u foo --password-stdin
    

    После успешного входа в систему это приводит к следующему: ~ / .docker / config.json, и при нажатии изображения происходит сбой.

    ***
    "index.docker.io": {
        "auth": "YWNhcm***"
    }
    ***
    

    Я боролся с docker push, как с использованием плагина Fabric8 Maven (в Windows 10), так и с прямым вызовом docker push из командной строки.

    Наконец, я решил обе проблемы одинаково.

    Мое репо называется vgrazi / playpen. В моем pom я изменил имя образа докера на vgrazi / playpen, как показано ниже:

    
      io.fabric8
      docker-maven-plugin
      0.31.0
      
         npipe:////./pipe/docker_engine
         true
         
           
             vgrazi/playpen
             
               ${project.basedir}/src/main/docker/
                             ...
    

    Это позволило мне сделать mvn clean package docker: build docker: push из командной строки, и, наконец, изображение появилось в моем репозитории, и это была проблема, которую я пытался решить.

    Кстати, чтобы ответить на OP и заставить это работать прямо из командной строки, без Maven, я сделал следующее (PS - это приглашение PowerShell, не вводите это):

    PS docker images
    vgrazi/docker-test/docker-play                playpen             0722e876ebd7        40 minutes ago      536MB
    rabbitmq                                      3-management        68055d63a993        10 days ago         180MB
    PS docker tag 0722e876ebd7 vgrazi:playpen
    PS docker push vgrazi/playpen
    

    и снова в моем docker.io появился образ: repo vgrazi / playpen

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

    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 
    

    Вывод:

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


    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

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

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

    docker логин : 
    

    Акцент на порт, который необходимо ввести, вероятно, является решением для тех, кто все еще ищет.docker login или docker login может подключиться без проблем, но когда придет время отправлять изображения, вы получите ту же ошибку, что и OP.

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

    ...

    Успешный вход в систему

    В моем случае я использую собственный встроенный в GitLab реестр докеров, который был настроен на использование порта 4567. Может быть нелегко проверить, с какого порта должен осуществляться доступ к реестру. Без указания указанного порта docker login войдет в систему успешно, но даст ту же проблему, о которой запросил OP:

    ...

    Отправка относится к репозиторию [...]

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

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

    Я знаю, что на этот вопрос уже есть много ответов, но ни один из них мне не помог.

    Я заметил, что создание образа было очень быстрым, и его нажатие на docker.io привело к ошибке:

    denied: requested access to the resource is denied
    

    я также заметил, что выполнение

    docker image ls
    

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

    Мне пришлось сделать

    docker container prune 
    

    , чтобы избавиться от остановленных контейнеров, и

    docker images prune -a
    

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

    Запрошенный доступ к ресурсу запрещен не из docker.io, а из локального докера. Забавно, что при сборке он не дает сбоев.

    У меня это сработало, когда я использовал свое имя docker-хаба при добавлении тегов к изображению. (Здесь xyz - имя docker-хаба)

    # Login to docker hub account 
    docker login 
    
    # tag image 
    docker tag nginx xyz/nginx
    
    # push image
    docker push xyz/nginx
    

    Это может быть очень специфичным для реестра контейнеров DigitalOceans, но, возможно, это помогает:

    В моем случае мой конвейер запускает задание по очистке (запуск сборки мусора реестра doctl) после docker push, что переводит реестр в режим только для чтения (см. документ). Таким образом, следующее нажатие, пока активно задание очистки, получит denied: запрошенный доступ к ресурсу запрещен.

    Если doctl сборщик мусора реестра get-active возвращает 404, задание завершено, а docker push завершится успешно.

    Я столкнулся с той же проблемой, я давал своему изображению имя something / image-name, но вместо этого я попытался с / image-nameи это сработало как шарм.

    Шаг 1

    вход в докер --username = jp9573

    Шаг 2

    docker push jp9573 / todo

    Раньше я давал jaypatel / todo, я просто изменил его на шаблон username / image. Таким образом, мне не нужно помечать изображение или что-то в этом роде. Думаю, это хороший выход для новичка.

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

    В моем случае sudo -E не удалось отправить это сообщение. Решение заключалось в том, чтобы предоставить доступ к докеру docker без sudo (создать групповой докер, добавить пользователя (Jenkins) в группу, установить группу в /var/run/docker.sock). Теперь docker push не требует sudo, и он работает.

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

    Я получал ту же ошибку. К сожалению, ошибка возникла из-за использования sudo перед docker push. Также вам может потребоваться удалить репозитории из dockerhub, поскольку существует ограничение на количество репозиториев, которое вы можете иметь. И, пожалуйста, попробуйте выход из докера, а затем вход в докер

    У меня такая же ошибка в ibmcloud. Я добавил пространство имен, а затем попытался протолкнуть свое изображение, проблема устранилась.

    ibmcloud cr namespace-add txts
    

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

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

    docker login
    

    И затем я отправил свое изображение, используя 'tagged name'.

    docker push {namespace}/mydevrepo
    

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

    docker login docker.io
    

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

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

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

    выход из докера

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

    My issue was very simply using invalid characters (an extra /) in my image name:

    myusername/something/image
    

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

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

    В случае, если кто-то еще столкнется с этим - в моем случае причина заключалась в том, что я использовал (устаревший) подход docker compose для отправки изображений. Переход на ожидаемый docker push решил проблему для меня.

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

    Моя проблема с git заключалась в настройке прав доступа к проекту. Я исправил это, включив «Реестр контейнеров» в настройках-> Общие-> Видимость, особенности проекта, разрешения и включив Реестр контейнеров для моего проекта (ссылка):

    enter image description here

    вход в докер из командной строки не работал. Я продолжал получать "запрошенный доступ к ресурсу запрещен" при попытке нажать.

    После входа в докер для самого приложения Windows, docker push работал нормально. Надеюсь, это кому-то поможет.

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

    docker logout
    

    , а затем

    docker login  
    

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

    TL; DR: в Gitlab имя изображения должно совпадать с именем проекта.

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

    docker login yourregistry.azurecr.io
    

    И затем пометьте свое изображение, чтобы оно соответствовало имени хоста вашего реестра.

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

    И, наконец, нажмите.

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

    TL; DR вход в докер не работал у меня на macOS, но вход в докер из приложения работал

    При использовании непосредственно из терминала команда docker login успешно запросила мои учетные данные, и после того, как я ввел их правильно (помните, что электронной почты нет, будет работать только идентификатор докера), она объявила: вход в систему выполнен успешно., но любой запрос на push завершится denied: запрошенный доступ к ресурсу запрещен

    Однако, когда я вошел в систему из запущенного приложения docker macOs (см. Значок на панели инструментов), оно сработало. Таким образом, может быть некоторая несогласованность между логином в докере и запущенным приложением / демоном докера

    проще всего использовать рабочий стол докера (для Windows 10 и выше и mac)

    первая регистрация в Docker Hub, указав dockerID

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

    enter image description here

    ОС: Ubuntu16.04

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

    Решение:

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

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

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

    источник: https://gitlab.com/help/user/project/container_registry#using-with-private-projects

    надеюсь, что это будет полезно (также, если вопрос уже опубликован)

    Я пришел сюда с тем же сообщением, но из Azure DevOps.

    В моем случае я использовал docker-compose, а не просто docker, и писал конвейер сборки на yaml.

    - task: DockerCompose@0
      displayName: 'Push services'
      inputs:
        azureSubscription: '$(Parameters.azureSubscriptionEndpoint)'
        azureContainerRegistry: '$(Parameters.azureContainerRegistry)'
        dockerComposeFile: '$(Parameters.dockerComposeFile)'
        additionalDockerComposeFiles: |
          docker-compose.release.yml
          docker-compose.ci.yml
        dockerComposeFileArgs: 'PublishFolder=publish'
        action: 'Push services'
        additionalImageTags: '$(Build.BuildId)'
        includeLatestTag: true
    

    В сообщении, которое я получил, конкретно говорилось, что он пытается нажать на docker.io, чего я не хотел. Я планировал, что это войдет в мой реестр контейнеров Azure.

    То, чего не хватало, было этой строкой под входными данными:

    containerregistrytype: Azure Container Registry
    

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

    У меня была такая же проблема. В моем случае я вошел в систему index.docker.io и отправил изображение на docker.io/username/image:tag.

    Решение - войти в docker.io, выполнив эту команду:

    export CI_REGISTRY=docker.io
    docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    docker push USERNAME/IMAGE:TAG
    

    , а выходы:

     Отправка относится к репозиторию [docker.io/USERNAME/IMAGE:TAG]
     eeb7e16c6369: Подготовка
     6bd09f46d0ae: Подготовка
     f5a7f7a3fb28: Подготовка
     07952c1df7f6: Подготовка
     a4522c0d203b: Подготовка
     3e207b409db3: Подготовка
     3e207b409db3: Ожидание
     a4522c0d203b: слой уже существует
     3e207b409db3: слой уже существует
     f5a7f7a3fb28: Толкнул
     6bd09f46d0ae: Нажал
     07952c1df7f6: Толкнул
     eeb7e16c6369: Нажал
     последний: дайджест: sha256: 7ce256fa83ef1eebcaaaa460c4d73f87f2adf304bc6e6c1b83a19d987cd61ad5
    Размер: 1579
    Запуск after_script
    00:02
    Сохранение кеша
    00:01
    Загрузка артефактов для успешной работы
    00:02
     Работа выполнена успешно
    

    С уважением.

    У меня была аналогичная проблема с конвейером Azure. Я пропустил добавление docker-id в раздел репозитория.

    From Azure, при нажатии, если используется только имя, например<имя-репо>, может не работать. Требуется полное имя репо, которое также включает docker-id.

    Используйте

    repository: '/'
    

    вместо

    repository: ''
    

    Фрагмент конвейера:

    - task: Docker@2
      inputs:
        containerRegistry: 'service-connection-name'
        repository: '/'
    

    Это сработало после того, как я изменил «логин в докере 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
    

    Перенести все теги

    используйте -a для отправки. s.t.имя пользователя / изображение docker push -a

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

    Вам нужно потянуть, чтобы проверить, все ли в порядке.

    Посмотреть на hub.docker.com

    Откройте «Теги», чтобы просмотреть все доступные теги после успешного нажатия

    Мой ответ связан с аналогичными проблемами Azure DevOps, которые возникли у меня со следующим общим конвейером (он более конкретен, но может помочь кому-то сэкономить время):

    1. Получить исходники с github
    2. Создать образ докера
    3. Отправить образ докеры в dockerhub

    Ошибка, которую я получил при нажатии denied: запрошенный доступ к ресурсу запрещен прислал мне сюда.

    Будьте осторожны с переменной $ (Build.Repository.Name), включенной в имя вашего изображения. По умолчанию это имя репозитория из github, но для того, чтобы ваш push работал, оно должно быть dockerhub_account_username / your_dockerhub_repository_name.

    Замените $ (Build.Repository.Name) на dockerhub_account_username / your_dockerhub_repository_name в поле имени вашего образа для этапов сборки и push.

    Это необходимо API-интерфейсу dockerhub, чтобы знать, куда поместить изображение.

    После того, как я попробовал каждое из решений с высокими баллами, мне все равно не повезло.

    Только когда я изменил фокус и ключевое слово поиска, включив в него свой помощник по учетным данным - pass.

    Если это аналогичный случай для вас (с использованием любого типа docker-credential-helpers и просто следуя общему руководству по настройке), попробуйте просмотреть шаги и посмотреть, не пропущено ли что-нибудь.

    Например, я использую pass в качестве хранилища кредитов для докеров, шаг, чтобы вставить пароль моей учетной записи dockerhub для выделенного pass-name docker-credential- helpers / docker-pass-initialized-check был пропущен, когда я просто следил за лучшими результатами поиска для настройки pass.

    После выполнения следующей команды docker push наконец проявил ко мне милосердие.

    pass insert docker-credential-helpers/docker-pass-initialized-check
    

    См. этот ответ для более подробной информации.

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

    so my push command was: docker push org-name/image-name

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

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

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

    Если он по-прежнему не работает после входа в докер, убедитесь, что репозиторий, в который вы пытаетесь нажать, был создан в первую очередь.

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

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

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

    В моем случае возможно, что у меня оказалось слишком много частных репозиториев, потому что моя видимость по умолчанию установлена ​​на частную:

    Default Visibility

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

    Billing Plans

    Как только я опубликовал проблемное репо, проблема стала очевидной:

    Make Repository Private 5 of 5

    2022 WebDevInsider