Docker公共registry推送失败:存储库不存在

我试图把我的docker图像推入公共dockerregistry:

$ 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 

但是,我已经创build了存储库(可在此查看)。 而且我也尝试推送到我尚未创build的存储库名称(上面示例中的第一个尝试)。

我认为(len:0)与它有关,但我不能谷歌它。 此外,我最初创build从dockerfile的图像为:

 docker build -t binarybana/fedora-dev . 

谢谢。

总是用“用户名”和“标签”构build你的图片

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

build筑物推后的形象

docker push <username>/dev-fedora:latest

如果您使用的是docker.io(dockerhub repo),则需要在其中包含名称docker.io。

 docker tag ${image_id} docker.io/${login_name}/${image_name} 

接着

 docker push docker.io/${login_name}/${image_name} is OK 

我也遇到这个错误版本Repository does not exist: gcr.io/my-project-id/my-container当试图将图像推送到Google容器registry 。

我的困惑来自于对Docker对“存储库”定义的误解。

存储库是一组Docker镜像。 存储库可以通过推送到registry服务器来共享。 存储库中的不同图像可以使用标签进行标记。

当Docker说存储库不存在时,这意味着它没有可以在本地find的映像,该映像使用registry.host/user-name/image-name组合标记 。

注意: Docker Hubregistry是默认的 ,所以如果您在这里推送,那么可以省略这个部分。

解决此问题的步骤如下:

  1. 仔细检查你在本地有什么图像。

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

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

     $ docker push gcr.io/my-proj/my-cntr:v1 

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

如果您使用的是Amazon AWS,那么在将Docker映像推送到Amazon ECR之前,需要创build一个存储库来存储它们。您可以使用AWSpipe理控制台或使用AWS CLI和AWS软件开发工具包创buildAmazon ECR存储库。

创build一个存储库

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

2.)从导航栏中,select要在其中创build存储库的区域。

3.)在“存储库”页面上,select“创build存储库”。

4.)对于存储库名称,input您的存储库的唯一名称,然后select下一步。

5.)现在你应该能够推动你的AWS回购!

您需要使用完整的图像名称。 当你在build筑时不指定标签时,它是latest ,所以你应该说

 docker push binarybana/fedora-dev:latest