使用标记本地不存在图像:将图像推送到本地注册表

Ami*_*hah 4 push local docker 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 locally with the tag: localhost:5000/user/apiserver
Run Code Online (Sandbox Code Playgroud)

我已经尝试用以下方式启动minikube:

minikube start --vm-driver xhyve --insecure-registry localhost:5000
eval $(minikube docker-env)
Run Code Online (Sandbox Code Playgroud)

fgu*_*gul 14

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

docker tag <imageId or imageName> <hostname>:<repository-port>/<image>:<tag>
docker tag af340544ed62 example.com:18444/hello-world:mytag
Run Code Online (Sandbox Code Playgroud)

成功创建可以等同于版本的标签后,您可以使用docker 镜像确认其创建并使用以下语法发出推送

docker push <hostname>:<repository-port>/<image>:<tag>
Run Code Online (Sandbox Code Playgroud)

有一个本地 nexus 存储库的示例

  • 感谢您实际解释如何添加标签。顶帖没有详细说明这一点。推荐将此帖子置顶。 (3认同)

Иль*_*шко 13

我有一个形象

trip-bot                     latest     0c9e8f0367bc   36 minutes ago   955MB
Run Code Online (Sandbox Code Playgroud)

我收到错误

推送引用存储库 [docker.io/ilkhr/trip-bot] 本地不存在带有标签的图像:ilkhr/trip-bot

像这样解决了问题

$ docker tag 0c9e8f0367bc ilkhr/trip-bot:trip-bot
Run Code Online (Sandbox Code Playgroud)

之后我就这样做了

$ docker push ilkhr/trip-bot:trip-bot
Run Code Online (Sandbox Code Playgroud)


sha*_*bby 12

我遇到了同样的错误,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
Run Code Online (Sandbox Code Playgroud)

我是这样标记的:

 docker tag centos devopskalsym:latest
Run Code Online (Sandbox Code Playgroud)

然后确认正在创建的标签:

[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
Run Code Online (Sandbox Code Playgroud)

由于我在docker hub 上的存储库是:devopskalsym/centos7,我尝试推送它:

docker push devopskalsym/centos7:latest
Run Code Online (Sandbox Code Playgroud)

并得到错误:

[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
Run Code Online (Sandbox Code Playgroud)

所以我删除了标签:

[root@ip-172-31-22-195 centos]# docker rmi devopskalsym
Untagged: devopskalsym:latest
Run Code Online (Sandbox Code Playgroud)

然后使用@BMitch 提到的格式正确重新标记。

docker tag centos:latest devopskalsym/centos7:latest
Run Code Online (Sandbox Code Playgroud)

使用的格式是这样的: docker tag local-image:tagname 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
Run Code Online (Sandbox Code Playgroud)

然后再次推它:

docker push devopskalsym/centos7:latest
Run Code Online (Sandbox Code Playgroud)

它起作用了

[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
Run Code Online (Sandbox Code Playgroud)

注意:您可能需要登录 docker login


小智 12

  1. 首先使用以下命令从 docker 登录开始:-

    docker login
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后用这个命令检查你的图像ID/标签

    docker images
    
    Run Code Online (Sandbox Code Playgroud)
  3. 获得图像 ID/标签后,使用此命令推送到 dockerhub 存储库

    docker tag <imageId or tag> <dockerhub id>/<imagename>:<tag>
    
    Run Code Online (Sandbox Code Playgroud)

或者对于一般情况你可以使用

docker tag <imageId or tag> <hostname>:<repository-port>/<imagename>:<tag>
Run Code Online (Sandbox Code Playgroud)

注意将尖括号替换为您的具体信息


BMi*_*tch 8

Successfully tagged user/apiserver:0.0.1

docker push localhost:5000/user/apiserver:0.0.1
Run Code Online (Sandbox Code Playgroud)

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