Docker 将图像推送到本地注册表时,本地不存在带有标记的图像

Docker 将图像推送到本地注册表时,本地不存在带有标记的图像,docker,push,local,docker-registry,minikube,Docker,Push,Local,Docker Registry,Minikube,我试图将图像推送到运行在minikube中的本地注册表,但出现以下错误: Successfully built ee84225eb459 Successfully tagged user/apiserver:0.0.1 $ docker push localhost:5000/user/apiserver:0.0.1 The push refers to a repository [localhost:5000/user/apiserver] An image does not exist

我试图将图像推送到运行在minikube中的本地注册表,但出现以下错误:

Successfully built ee84225eb459
Successfully tagged user/apiserver:0.0.1

$ docker push localhost:5000/user/apiserver:0.0.1

The push refers to a repository [localhost:5000/user/apiserver]
An image does not exist locally with the tag: localhost:5000/user/apiserver
我已经尝试使用以下方法启动minikube:

minikube start --vm-driver xhyve --insecure-registry localhost:5000
eval $(minikube docker-env)

图像标记需要包含注册表名/端口,以便将它们推送到默认注册表(docker hub)以外的任何位置。因此,您需要将图像标记为
localhost:5000/user/apiserver:0.0.1
,而不是
user/apiserver:0.0.1
。然后您就可以推送到本地注册表。

您需要标记推送图像。标记图像时,可以使用图像标识符(imageId)。当显示具有docker图像的所有图像的列表时,会列出它。 用于创建标记的语法和示例(使用imageId):

docker tag <imageId or imageName> <hostname>:<repository-port>/<image>:<tag>
docker tag af340544ed62 example.com:18444/hello-world:mytag
docker标签:/:
docker tag af340544ed62 example.com:18444/hello world:mytag
成功创建可等效于版本的标记后,您可以使用docker images确认其创建,并使用以下语法发出push

docker push <hostname>:<repository-port>/<image>:<tag>
docker推送:/:

我也遇到了同样的错误,OP指的是,用谷歌搜索把我带到这里的确切短语,但是,在我的例子中,我把它推到了默认/公共存储库(hub.docker.com),而不是本地存储库。但事实证明,问题是一样的

这是我在磁盘上创建的本地映像

[root@ip-172-31-22-195 centos]# docker images
REPOSITORY             TAG       IMAGE ID       CREATED        SIZE
centos                 latest    927311af2297   20 hours ago   193MB
我给它贴了这样的标签:

 docker tag centos devopskalsym:latest
然后确认正在创建的标记:

[root@ip-172-31-22-195 centos]# docker images
REPOSITORY             TAG       IMAGE ID       CREATED        SIZE
devopskalsym           latest    927311af2297   20 hours ago   193MB
centos                 latest    927311af2297   20 hours ago   193MB
因为我在docker hub上的存储库是:devopskalsym/centos7,所以我尝试推送它:

docker push devopskalsym/centos7:latest
并得到了错误信息:

[root@ip-172-31-22-195 centos]# docker push devopskalsym/centos7:latest
The push refers to repository [docker.io/devopskalsym/centos7]
An image does not exist locally with the tag: devopskalsym/centos7
因此,我删除了带有以下内容的标签:

[root@ip-172-31-22-195 centos]# docker rmi devopskalsym
Untagged: devopskalsym:latest
然后使用@BMitch提到的格式正确地重新标记

docker tag centos:latest devopskalsym/centos7:latest
使用的格式如下:
docker标记本地图像:标记名new repo:tagname

现在它正确地显示了图像:

[root@ip-172-31-22-195 centos]# docker images
REPOSITORY             TAG       IMAGE ID       CREATED        SIZE
devopskalsym/centos7   latest    927311af2297   20 hours ago   193MB
centos                 latest    927311af2297   20 hours ago   193MB
然后再按一下:

docker push devopskalsym/centos7:latest
它成功了

[root@ip-172-31-22-195 centos]# docker push devopskalsym/centos7:latest
The push refers to repository [docker.io/devopskalsym/centos7]
b7d51bf3d09e: Pushing [==================================>                ]    132MB/193.3MB

注意:您可能需要使用
docker login

登录成功构建的8c921763a005成功标记了localhost:5000/user/apiserver:0.0.1 docker push localhost:5000/user/apiserver:0.0.1推送引用存储库[localhost:5000/user/apiserver]Get:dial tcp127.0.0.1:5000:getsockopt:connection refuesedalso这是在kubectl端口转发$POD 5000:5000&其中POD是我的registry-7f8lq或registry-POD,它没有帮助我处理5000{“存储库”的连接:[]}您需要为这个问题另外回答一个问题。这是从为什么找不到我的映像到为什么我的端口转发不工作。谢谢-能够让它与另一个本地注册表部署和端口转发一起工作-我的参考链接,答案很简单,但很烦人,我忘了用用户名标记我的图像,而且我把它设为私人的,不知道这是否真的必要,请让我知道如果是这样的话。所以其他人可以从它和我身上学到:)thnx对于这篇文章来说,它是很有帮助的。顺便说一句,对不起,我有点离题了。谢谢你解释如何添加标签。上面的文章没有详细说明这一点。推荐这是最上面的帖子。
[root@ip-172-31-22-195 centos]# docker push devopskalsym/centos7:latest
The push refers to repository [docker.io/devopskalsym/centos7]
b7d51bf3d09e: Pushing [==================================>                ]    132MB/193.3MB