Docker 将图像推送到本地注册表时,本地不存在带有标记的图像
我试图将图像推送到运行在minikube中的本地注册表,但出现以下错误: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
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