拒绝:请求的资源访问被拒绝:docker

我遵循此链接创建我的第一个docker映像,它成功了,现在我正试图从这个链接将此映像推送到我的docker存储库中。但是每当我试图将此映像推送到存储库时,我都会遇到这种类型的错误。

denied: requested access to the resource is denied

注意:我已经成功登录到docker

701350 次浏览

您可能需要在docker推送之前将docker存储库切换为私有。

由于吴院长提供的回答ses提供的这一评论,在推送之前,请记住注销,然后登录从命令行到您的docker hub帐户

# 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

docker处理用户ID和存储库的方式可能有点混乱。 假设您在docker hub上创建了一个用户帐户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作为协作者。

我在参加docker初学者课程时遇到了同样的问题。我通过在docker推送调用之前执行docker login来解决这个问题。

同样需要注意的是,当您标记图像时,您使用命名空间标记它,然后使用您的存储库/mydevrepo标记它。这让我在遵循Docker文档时感到困惑。之后我使用了:

docker login

然后我使用标记名称推送了我的图像。

docker push {namespace}/mydevrepo

如果在docker login之后仍然失败,请确保首先创建了您尝试推送到的存储库。

使用下面的命令:

$ 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

Docker对您可以拥有的私有存储库的数量也有限制。如果您通过从本地计算机推送来创建私有存储库,它将创建存储库,但不能将任何其他内容推送到它或从它中提取,您将收到“拒绝对资源的请求访问”错误。

操作系统:Ubuntu16.04

原因:我删除了客户端配置文件(dockerconfig.json

解决方案:

  • 重新启动docker。
    服务docker重新启动
  • 它需要输入登录信息,然后自动生成配置文件。
    docker登录--username=你的dockerhubername--email=youremail@company.com

我有同样的问题,但这里给出的接受答案对我不起作用。 我尝试了几步,终于能够绕过去推它。希望这对某人有帮助。

以下是为我工作的步骤:

1)登录到docker。

docker login -u sirimalla

2)标记您的图像构建

我在这里的图像名称是:mylocalimage,默认情况下它有标签:最新
我的用户名是:sirimalla在docker云注册,我创建了一个名为:dockerhub

的公共存储库

所以我的个人存储库现在变成了:sirimalla/dockerhub 我想用标签推送我的图像:myfirstimagepush

我标记如下:

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3)将图像推送到我的个人docker存储库,如下所示

docker push sirimalla/dockerhub:myfirstimagepush

并成功推送到我的个人docker repo。

从应用程序登录。我一直在尝试只从终端没有运气。

这是版本17.06.1

在此处输入图片描述

简单的工作解决方案:

转到此处https://hub.docker.com/创建一个名为johnsmith/private-repository的私有存储库,这是您在构建映像时将用于映像的NAME/REPOSITORY

  • 首先,docker login

  • 其次,我使用“docker build -t johnsmith/private-repository:01 .”来创建图像,我使用“docker images”来确认创建的图像,例如在下面的黄色框中:(对不起,我不能粘贴表格格式,只能粘贴文本字符串)

johnsmith/私有存储库(存储)01(TAD)c5f4a2861d6e(图像ID)2天前(创建)305MB(大小)

  • 第三,我使用docker push johnsmith/private-repository:01

成交!

将您的图像重命名为用户名/图像名称 docker标记你的当前图像/当前图像dockerhub-username/某位名称:你的标签(例如:最新)

尝试退出“Docker for Windows”应用程序并退出https://hub.docker.com/站点,然后执行“docker登录”和“docker推送”。 对我有帮助

我今天遇到了同样的问题。唯一对我有用的是显式登录“docker.io”

docker login docker.io

我尝试了各种其他名称,登录似乎有效,但后来会导致以下错误。

请求访问资源被拒绝

命令提示符下的docker登录不起作用。我在尝试推送时一直收到“对资源的请求访问被拒绝”。

在登录到Windows应用程序本身的docker后,docker推送工作得很好。希望这对某人有所帮助。

我也遇到了这个问题。原来我使用的是免费层,并试图在私有存储库中推送多个映像。使1个映像为私有,其余为公共。

不确定docker hub发生了什么,但发布的解决方案都不适合我。以下是截至2018年1月对我有用的解决方法:

  1. 转到hub.docker.com并将存储库更改为私有
  2. 在你的shell中:

docker images

存储标签图像ID创建大小 verse_gapminder_gsl最新023ab91c6291 3分钟前1.975 GB verse_gapminder最新bb38976d03cf 13分钟前1.955 GB Rocker/verse最新0168d115f220 3天前1.954 GB

docker tag bb38976d03cf dockhubusername/verse_gapminder:mytag

docker login docker.io

docker push dockhubusername/verse_gapminder:mytag

  1. 返回docker hub并将repo更改回公共。 这对我很有用。

docker登录后,您需要使用前缀命名您的映像。

例如,如果您在docker-hub中的用户名是Shah,则图像应该是:

Shah/firstimage

如果在使用Azure容器注册表时遇到此问题,可以通过先登录注册表来解决。

docker login yourregistry.azurecr.io

然后标记您的图像以匹配注册表的主机名。

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

最后推动它。

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

如果其他人遇到这个问题-在我的情况下,原因是我使用(已弃用)docker compose方法来推送图像。切换到预期的docker push为我解决了这个问题。

在我的例子中,我正在推送到一个组织,我在一个团队中,该团队对存储库具有管理员权限。

所以我的推送命令是: docker push org-name/image-name

我可以成功推送到用户名/图像名称,但不能推送到组织。我三次检查权限。没有工作。

解决方案是从docker hub中删除存储库并使用以下方法再次推送新鲜: docker push org-name/image-name

为了它的价值,我认为回购最初是在帐户转换为组织之前推送的。

另一个(相当聪明的)原因是:你的计划没有私人回购。

在我的情况下,sudo-E无法使用此消息。解决方案是在没有sudo的情况下提供访问do docker(创建组docker,将(Jenkins)用户添加到组中,将组设置为 /var/run/docker.sock)。现在docker push不需要sudo,它可以工作。

所以,如果它对任何人都有帮助…
我有同样的问题,这是我的问题和修复是什么。

  • 我的测试网络上有一台名为“Galaxy”的计算机。
  • 我使用以下run命令设置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
    

    然后我试图将图像从网络上的笔记本电脑推送到Galaxy,所以我这样做了:

    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
    

    因此,出于某种原因,我不得不将端口作为存储库名称的必需部分包含在标记中。



    希望这能帮助其他人。

  • 我的问题是在我的图像名称中使用无效字符(额外的/):

    myusername/something/image
    

    是一个无效的图像名称。请尝试myusername/thing-image。希望这对某人有帮助。

    前面所有的答案都是正确的,我只想补充一个我看到的信息没有提到;

    如果项目是私人项目,则必须配置个人访问令牌或启用read_registry密钥的部署令牌才能正确推送图像。

    来源:https://gitlab.com/help/user/project/container_registry#using-with-private-projects

    希望这是有帮助的(如果问题发布到目前为止的时间)

    这个答案对我未来的自己和其他人一样多。当我正确登录时,我遇到了这个确切的问题,但是当我的私人回购数量大于或等于我的计划允许的限制时,我试图推送到私人回购。

    我不太确定我是如何创建太多的私人回购的,但如果我的计划包括5个私人回购,不知何故我有6个,那么这就是我将收到的错误:

    denied: requested access to the resource is denied

    在我的情况下,可能我最终使用了太多的私有存储库,因为我将默认可见性设置为私有:

    默认可见性

    这是您确定可以拥有多少个私有repos的地方:

    计费计划

    一旦我公开了有问题的回购,问题就变得明显了:

    使存储库私有5 of 5

    我真的希望这能帮助到一些人(首先看到最终答案的人是我自己):

    我不断尝试输入

    docker push user/repo/tag
    

    相反

    docker push user/repo:tag
    

    因为我也做了这样的标签:

    docker tag image user/repo/tag
    

    …一切都失败了。

    我真诚地希望你不要重复我的错误。我在这上面浪费了30分钟…

    我也遇到了这个问题,我测试了目前这里的解决方案,但没有结果,我正确登录了,至少根据docker login的输出,但我仍然无法推送图像。最终有效的方法很简单:

    docker logout

    然后又是docker login,这是微不足道的。我不确定发生了什么,但强制重新登录起作用了。

    我的答案与Azure运营模式有关,我在以下常见管道中遇到了类似的问题(它更具体,但可能有助于某人节省时间):

    1. 从github获取源代码
    2. 构建docker镜像
    3. 将docker镜像推送到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需要这一点才能知道在哪里推送映像。

    对于那些试图将映像推送到自己的Nexus存储库管理器的人,请执行以下操作:

    1)登录到您的Nexus存储库管理器(端口8443与特定的Docker主机存储库相关联)

    sudo docker login xxx.mydomain.com:8443
    

    2)使用您的NEXUS服务器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
    

    我在git上的问题是项目权限配置。 我通过在设置->通用->可见性,项目功能,权限中启用“容器注册表”来修复它,并为我的项目启用容器注册表(链接):

    在此处输入图片描述

    我带着上面相同的消息来到这里,但来自Azure运营模式。

    在我的例子中,我使用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运营模式上拔毛。

    太长别读docker login在macOS上对我不起作用,但从应用程序的docker登录工作

    当直接从终端使用时,命令docker login成功地询问了我的凭据,并且在我正确输入它们之后(请记住没有电子邮件,只有docker ID才能工作),它宣布login succeeded,但任何推送请求都将以denied: requested access to the resource is denied结束

    但是,当我从正在运行的macOs docker应用程序登录时(参见工具栏中的图标)它起作用了。所以docker login和正在运行的docker应用程序/守护程序之间可能存在一些不一致

    Docker中心计划对命名空间可以使用的私有存储库的数量有限制。例如,免费计划只允许您在任何时间点为帐户使用一个私有存储库。

    如果您在计划限制之下,那么您的推送将成功。否则,将创建一个带有适当标签的空存储库,但不会推送映像本身。

    在我的例子中,我在推送图像之前使用Web控制台将存储库创建为公共。

    我在ibmCloud中遇到了同样的错误。我添加了命名空间,然后尝试推送我的图像,它解决了问题。

    ibmcloud cr namespace-add txts
    

    我正在努力推动docker,既使用Fabric8 Maven插件(在Windows 10上),又直接从命令行调用docker push

    最后,我以同样的方式解决了这两个问题。

    我的存储库名为vgrazi/playpen。在我的pom中,我将docker映像名称更改为vgrazi/playpen,如下所示:

    <plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.31.0</version>
    <configuration>
    <dockerHost>npipe:////./pipe/docker_engine</dockerHost>
    <verbose>true</verbose>
    <images>
    <image>
    <name>vgrazi/playpen</name>
    <build>
    <dockerFileDir>${project.basedir}/src/main/docker/</dockerFileDir>
    ...
    

    这让我从命令行执行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

    ~/.docker/config.json中的Docker登录参数应正确设置(登录后自动完成)

    1)不传递服务器参数登录:

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

    成功登录后,结果如下dockerconfig.json和推送图像成功

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

    2)使用服务器参数作为index.docker.io登录

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

    成功登录后,结果如下dockerconfig.json和推送图像失败

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

    我知道这个问题已经有很多答案了,但没有一个对我有帮助。

    我观察到的是,构建图像非常快,推动docker.io导致错误:

    denied: requested access to the resource is denied
    

    我还注意到做一个

    docker image ls
    

    透露我的形象的最新版本是几天前的。

    我不得不做一个

    docker container prune
    

    要摆脱停止的容器,以及

    docker image prune -a
    

    删除旧图像。 然后我可以成功地建立和推送我的形象。

    拒绝:对资源的请求访问被拒绝不是来自docker.io,而是来自本地docker。有趣的是,它在构建过程中没有失败。

    在我将“docker登录https://hub.docker.com”更改为“docker登录docker.io”并提供用户名和密码后,它起作用了。

    然后执行以下命令:

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

    注:“new-repo”将包含“Docker ID+Repo名称”

    在这里,我在Docker Hub中创建了“ubuntu”存储库,然后运行以下命令。

    示例:

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

    我很慢地添加另一个答案,但是接受的答案和提到docker login的剩余答案缺少一个边缘案例来解决其他人在评论中陈述的问题。

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

    强调需要输入的port可能是那些仍在搜索的人的解决方案。docker logindocker login <private-repo-host>可能连接没有问题,但是当需要推送图像时,你会得到与OP相同的错误。

    也就是说,您可以连接w/o定义主机或端口,并且仍然可以获得:

    登录成功

    在我的情况下,我使用的是自托管的GitLab内置的docker-注册表,该注册表设置为使用端口4567。验证必须从哪个端口访问注册表可能是冒险的。如果不指定所述端口docker login <our.gitlab.host>将成功登录,但给出了OP询问的相同问题:

    推送指的是存储库[…]

    拒绝访问:禁止访问

    如果您使用的是docker.io/dockerhub您可能不会遇到此问题,但如果您有自托管/私有注册表解决方案,则可能性会增加,您需要使用docker注册表的主机和端口显式登录。

    不要让标签名称被误导。
    解决这个问题的方法:

    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: sha 256:405 b 6 f 0 a e 25772 ef 71 b 8 f 59 fd 6 a 56 ff 9 b 426 f 50 bd 24 bac 2 b 5 db 41 f 65 ef d 3387 c 尺寸:1365

    误导是标签,确保你明白这一点。

    在尝试了每个高分解决方案之后,我仍然没有运气。

    直到我改变了我的重点和搜索关键字,包括我的凭据助手通行证。

    如果这对你来说是一个类似的情况(使用任何类型的docker-凭据-帮助器,并且只是遵循一般的设置指南),请尝试查看步骤并查看是否遗漏了任何内容。

    例如,我使用通过作为docker的凭据库,当我按照热门搜索结果设置通过时,错过了插入专用通行名docker-credential-helpers/docker-pass-initialized-check的dockerhub帐户密码的步骤。

    在发出以下命令后,docker push终于对我有些怜悯。

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

    有关更多详细信息,请参阅这个答案

    最简单的方法是使用docker桌面(适用于Windows 10或更高版本和mac)

    通过提供dockerID首次注册docker hub

    然后单击您机器中的docker桌面图标->首选项->然后使用docker hub docker/id和密码登录到它。

    在此处输入图片描述

    我遇到了同样的问题。在我的情况下,我登录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
    

    其输出是:

     The push refers to repository [docker.io/USERNAME/IMAGE:TAG]
    eeb7e16c6369: Preparing
    6bd09f46d0ae: Preparing
    f5a7f7a3fb28: Preparing
    07952c1df7f6: Preparing
    a4522c0d203b: Preparing
    3e207b409db3: Preparing
    3e207b409db3: Waiting
    a4522c0d203b: Layer already exists
    3e207b409db3: Layer already exists
    f5a7f7a3fb28: Pushed
    6bd09f46d0ae: Pushed
    07952c1df7f6: Pushed
    eeb7e16c6369: Pushed
    latest: digest: sha256:7ce256fa83ef1eebcaaaa460c4d73f87f2adf304bc6e6c1b83a19d987cd61ad5
    size: 1579
    Running after_script
    00:02
    Saving cache
    00:01
    Uploading artifacts for successful job
    00:02
    Job succeeded
    

    问候。

    我也面临着同样的问题,我给我的图像命名为something/image-name,但我尝试了<docker-hub-username>/image-name,它就像一个魅力。

    步骤1

    docker login --username=jp9573

    步骤2

    docker push jp9573/todo

    早些时候我给jaypatel/todo,我只是把它改为username/image模式。这样,我不必标记图像或任何东西。我认为这对新手来说是一个很好的方法。

    我也遇到了同样的错误。不幸的是,该错误是由于在docker press之前使用了sudo。此外,您可能需要从dockerhub中删除存储库,因为您可以拥有的存储库数量有限制。并且,请尝试docker logout,然后docker login

    有时,当您已经使用其他帐户登录时,您可能会遇到此问题。在这种情况下,您将不得不:

    docker logout
    

    然后

    docker login
    

    我在使用Gitlab注册表时也遇到了此错误消息。不同之处在于我试图从以前的构建中更改图像的名称。那里的问题是,被推送的图像的注册表不存在,因为图像的新名称与我组中的任何项目都不匹配。

    TLDR:在Gitlab中,映像名称必须与项目名称匹配。

    这可能是非常具体的DigitalOceans容器注册表,但也许它有助于:

    在我的例子中,我的管道在docker push之后触发了一个清理作业(doctl registry garbage-collection start),它将注册表置于只读模式(参见doc)。因此,当清理作业处于活动状态时,下一次推送将获得denied: requested access to the resource is denied

    如果doctl registry garbage-collection get-active返回404,则作业完成,docker push将成功完成。

    我有一个类似的问题,我通过创建一个具有相同映像名称的存储库来解决它,然后将其推送到docker,它起作用了

    当我在标记图像时使用我的docker hub名称时,它对我有用。(在这里,xyz是一个docker hub名称)

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

    推送所有标签

    使用-a推送。s. t.docker push username/image -a

    访问被拒绝可能是由于docker存储库权限不公开(你可以仔细检查)

    你需要拉来检查它是否正常。

    查看hub.docker.com

    推送成功后打开标签,查看所有可用标签

    我在Azure pipeline中遇到了类似的问题。我错过了在存储库部分添加docker-id

    Azure开始,在推送时,如果仅使用名称,例如<repo-name>,可能不起作用。它需要完全限定的存储库名称,其中还包括docker-id

    使用

    repository: '<docker-id>/<repo-name>'
    

    而不是

    repository: '<repo-name>'
    

    管道片段:

    - task: Docker@2
    inputs:
    containerRegistry: 'service-connection-name'
    repository: '<docker-id>/<repo-name>'
    

    将图像名称更改为“用户名”/“image_name”

    这在Windows 10上为我工作

    docker登录

    有一个docker文件,要求是构建镜像并立即将其推送到docker hub

    1. 登录Docker hub
      sudo docker登录-uyour_username
      输入密码

    2. 构建图像
      sudo docker构建-tyour_username/demorepo: 1.0
      上面没有提到图像名称,因为your_username/demorepo是一个 docker hub中的存储库。标记名称为1.0

    3. 推送图片
      sudo docker pressyour_username/demorepo: 1.0

      当前版本已发布,请继续关注。

    将现有镜像推送到Docker中心

    1. 登录Docker中心
      sudo docker登录-uyour_username
      输入密码

    2. 标记您的图像(假设您的图像命名为test_docker: 1.0)
      sudo docker tagtest_docker: 1.0your_username/demorepo
      在上面,第一个推送是给你的图像的标签名称,test_docker 1.0标签。
      重要提示:(标记时,未提及图像名称)
      现在在docker镜像中,你将有两个镜像,一个说test_docker1.0,另一个说your_username/demorepo first stush

    3. 推送图片
      sudo docker pressyour_username/demorepo:第一次推送

    是的,也许令人尴尬,但在这个问题上似乎根本没有明确的留档:我刚刚使用私有存储库注册了Docker Pro。我创建了一个私有存储库,然后尝试推送到它。得到了可怕的“拒绝”消息。

    推送到我的公共repos工作正常,所以我知道我登录正确。

    在尝试了前30个答案中与Docker Hub相关的所有内容之后……我终于明白了私有存储库的工作原理:它们与公共存储库相同,但需要额外的步骤。


    当推送到存储库(Docker Hub帐户中的任何存储库)时,您需要在image:tag前面加上您的用户名,例如:

    给定以下值,

    用户名=你的用户名
    图像名称=图像
    标签=标签

    1)标记(或提交)本地图像,使用您的用户名添加前缀

    docker tag theimage:thetag yourusername/theimage:thetag
    

    备注

    • 如果您在组织中,则需要双前缀图像-像这样:
    docker tag theimage:thetag yourusername/yourorganizationname/theimage:thetag
    
    • 如果你的标签是latest:thetag部分可以省略;如果你不输入:thetag部分,Docker会假设:latest

    2)将前缀映像推送到Docker Hub:

     docker push yourusername/theimage:thetag
    

     docker push yourusername/yourorganizationname/theimage:thetag
    

    额外的一步:

    要么

    在上面的步骤1之前,在您的Docker Hub帐户中创建一个私有存储库。

    请注意,存储库名称必须与您计划推送的theimage相同。不要在存储库名称中包含thetag部分。例如,如果您的映像是ubuntu:14.04,则应将存储库命名为ubuntu

    <强>或

    如果您没有提前创建存储库(这不是必需的!):转到您的帐户Docker Hub;单击新推送的仓库,然后单击其设置选项卡-并使您的仓库私有。


    我见过其他拥有私有存储库的人用两个前缀标记它们,例如xyz/abc/theimage:thetag,我认为第二个前缀是我创建的用于将存储库标记为私有的东西。不-这仅适用于组织。删除任何第二个前缀并将我的存储库名称设置为theimage修复了我的否认错误!

    另一个注意事项:每个存储库都包含具有给定存储库名称的图像的所有标记版本。所以,例如,ubuntu:latestubuntu:14.04,比如说,两者将在ubuntu存储库中。

    有趣的Docker!

    最终对我有用的唯一方法是在docker hub中创建一个公共存储库并用相同的名称标记本地映像,并在协作者{在dockerhub}中添加我的userID并最终推送它。

    如果您已经登录并且仍然收到错误。请按照步骤操作,

    PS C:\Users\rohit\Docker> docker logout
    Removing login credentials for https://index.docker.io/v1/
    
    
    PS C:\Users\rohit\Docker> docker login
    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: rohithpoya
    Password:*****************
    Login Succeeded
    
    
    Logging in with your password grants your terminal complete access to your account.
    For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/
    
    
    PS C:\Users\rohit\Docker> docker push rohithpoya/mongo-enterprise:5
    The push refers to repository [docker.io/rohithpoya/mongo-enterprise]                                                                                                                                                                        83ee27b8fe98: Pushed
    

    第1步:更改docker帐户中的隐私模式

    https://hub.docker.com/settings/default-privacy 输入图片描述

    第2步:运行屏幕简短中提到的以下命令:

    输入图片描述

    • docker镜像
    • docker tag<><>/<>:最新
    • docker登录docker.io
    • docker推送<>/<>:最新

    输出: 输入图片描述

    我在Azure Devops中创建CI管道以构建Docker映像并将其推送到Docker Hub时遇到了同样的问题。我犯的错误是在容器存储库部分提供了错误的条目。

    在BuildAndPush任务中,我在容器存储库字段中给出存储库名称。实际上存储库名称应该附加Docker Hub用户名/。 例如,您的用户名是myuser,存储库名称是test,然后提供条目作为myuser/test。一旦我纠正了这个问题,管道成功工作,图像被推送到我的docker hub存储库