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是默认的 ,所以如果您在这里推送,那么可以省略这个部分。
解决此问题的步骤如下:
-
仔细检查你在本地有什么图像。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE gcr.io/my-proj/my-typo v1 40c2ae2dedb8 2 days ago 427.8 MB
-
如果有拼写错误,可以运行
docker tag
命令来修复它。$ docker tag gcr.io/my-proj/my-typo:v1 gcr.io/my-proj/my-cntr:v1
-
现在,您应该能够使用完整的名称(包括标记)来推送图像。
$ 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