Docker公共注册表推送失败:存储库不存在

JKn*_*ght 54 docker docker-registry

我正在尝试将我的docker镜像推入公共docker注册表:

$ docker login
Username (binarybana): 
WARNING: login credentials saved in /home/jknight/.dockercfg.
Login Succeeded

$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
binarybana/dev-fedora   latest              10c7881fbaca        24 hours ago        1.148 GB
binarybana/fedoradev    latest              10c7881fbaca        24 hours ago        1.148 GB
binarybana/fedora-dev   latest              10c7881fbaca        24 hours ago        1.148 GB
<none>                  <none>              b44397dc4c99        24 hours ago        1.148 GB
<none>                  <none>              a98c27ba4738        24 hours ago        1.141 GB
<none>                  <none>              775c74a34add        24 hours ago        1.141 GB
<none>                  <none>              2be2491d2354        24 hours ago        1.141 GB
docker.io/fedora        21                  93be8052dfb8        7 days ago          241.3 MB

$ docker push binarybana/dev-fedora

Do you really want to push to public registry? [Y/n]: Y
The push refers to a repository [docker.io/binarybana/dev-fedora] (len: 0)
FATA[0001] Repository does not exist: docker.io/binarybana/dev-fedora 

$ docker push binarybana/fedora-dev

Do you really want to push to public registry? [Y/n]: Y
The push refers to a repository [docker.io/binarybana/fedora-dev] (len: 0)
FATA[0002] Repository does not exist: docker.io/binarybana/fedora-dev 
Run Code Online (Sandbox Code Playgroud)

然而,我已经创建了存储库(可在此处查看).我还试图推送到我尚未创建的存储库名称(上例中的第一次尝试).

我认为(len:0)与它有关,但我不能谷歌.我最初也是从dockerfile创建的图像:

docker build -t binarybana/fedora-dev .
Run Code Online (Sandbox Code Playgroud)

谢谢.

Mah*_*tam 127

始终使用"用户名"和"标记"构建您的图像

docker build -t <username>/dev-fedora:latest .

建立后推动图像

docker push <username>/dev-fedora:latest

  • 这就是我的答案 (2认同)

San*_*dhe 20

如果你使用docker.io(dockerhub repo),你需要标记它,包括名称docker.io.

docker tag ${image_id} docker.io/${login_name}/${image_name} 
Run Code Online (Sandbox Code Playgroud)

然后

docker push docker.io/${login_name}/${image_name} is OK
Run Code Online (Sandbox Code Playgroud)


Gre*_*Rox 8

如果您使用的是亚马逊AWS,则在将Docker映像推送到Amazon ECR之前,您需要创建一个存储库以存储它们.您可以使用AWS管理控制台或AWS CLI和AWS开发工具包创建Amazon ECR存储库.

创建存储库

1.)通过以下网址打开Amazon ECS控制台:https://console.aws.amazon.com/ecs/.

2.)在导航栏中,选择要在其中创建存储库的区域.

3.)在"存储库"页面上,选择"创建存储库".

4.)对于存储库名称,输入存储库的唯一名称,然后选择下一步.

5.)现在您应该能够推送到您的AWS回购!


Tim*_*ast 7

Repository does not exist: gcr.io/my-project-id/my-container尝试将图像推送到Google容器注册表时,我也遇到了此错误.

我的困惑来自于对Docker对"存储库"的定义的误解.

存储库是一组Docker镜像.可以通过将存储库推送到注册表服务器来共享存储库.可以使用标记标记存储库中的不同图像.

当Docker说存储库不存在时,意味着没有可以在本地找到的用该组合标记的图像registry.host/user-name/image-name.

注意:Docker Hub注册表是默认设置,因此如果您在那里推送,则可以省略该部分.

解决此问题的步骤:

  1. 仔细检查您在本地可用的图像.

    $ docker images
    REPOSITORY              TAG     IMAGE ID      CREATED     VIRTUAL SIZE
    gcr.io/my-proj/my-typo  v1      40c2ae2dedb8  2 days ago  427.8 MB
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果有拼写错误,您可以运行docker tag命令来修复它.

    $ docker tag gcr.io/my-proj/my-typo:v1 gcr.io/my-proj/my-cntr:v1
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在,您应该能够使用完整名称(包括标记)来推送图像.

    $ docker push gcr.io/my-proj/my-cntr:v1
    
    Run Code Online (Sandbox Code Playgroud)

    注意:如果您要推送到Google容器注册表,请使用gcloud docker -- push而不是docker push.

  • 感谢您对存储库定义的解释,对于理解我遇到的实际问题非常有用. (2认同)