本地不存在带有标签的图像:同时将图像推送到本地注册表

问题描述 投票:0回答:7

我正在尝试将图像推送到在 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 push local docker-registry minikube
7个回答
37
投票

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

docker tag <imageId or imageName> <hostname>:<repository-port>/<image>:<tag>
docker tag af340544ed62 example.com:18444/hello-world:mytag

一旦成功创建相当于一个版本的标签,您可以使用 docker images 确认其创建并使用语法发出 push

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

本地关系存储库有一个示例


31
投票

我遇到了同样的错误,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 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

然后再推一下:

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

登录

23
投票
Successfully tagged user/apiserver:0.0.1

docker push localhost:5000/user/apiserver:0.0.1

图像标签需要包含注册表名称/端口,以便您将它们推送到默认注册表(docker hub)以外的任何地方。所以你需要将你的图像标记为

localhost:5000/user/apiserver:0.0.1
而不是
user/apiserver:0.0.1
。然后你就可以推送到你的本地注册表。


10
投票

我有一张图片

trip-bot                     latest     0c9e8f0367bc   36 minutes ago   955MB

我得到了错误

推送参考仓库[docker.io/ilkhr/trip-bot] 本地不存在标签为:ilkhr/trip-bot

的图像

这样解决了问题

$ docker tag 0c9e8f0367bc ilkhr/trip-bot:trip-bot

之后我就这样做了

$ docker push ilkhr/trip-bot:trip-bot

9
投票
  1. 首先使用这些命令从 docker login 开始:-

    docker login
    
  2. 然后通过这个命令检查你的图像ID/标签

    docker images
    
  3. 一旦你得到你的图像 ID/标签,然后使用这个命令推送到你的 dockerhub 存储库

    docker tag <imageId or tag> <dockerhub id>/<imagename>:<tag>
    

或者一般情况下你可以使用

    docker tag <imageId or tag> <hostname>:<repository-port>/<imagename>:<tag>

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


0
投票

如果您尝试推送到 docker hub 并出现此标记错误,请记住,在构建映像的那一刻,您应该说明您的 docker hub 帐户的用户名,以便正确推送它。

所以在我的例子中,正确的命令是

docker image build -t marcofloriano/hello-docker .

而不是

docker image build -t hello-docker .


0
投票

正如其他人所说,问题是通常是由于不正确的标记

这里是一个 将 docker 部署到 DockerHub 的工作示例

标签格式为

<namespace>/<repo_name>:<version>
。命名空间通常存储在存储库机密中。请注意,在构建时分配标签很方便.

name: Docker Image CI

on:
  push:
    branches: [ "feature/docker_image" ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Log in to DockerHub
      env:
        DOCKER_USER: ${{secrets.DOCKER_USER}}
        DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}}      
      run: |
        docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
    - name: Build the Docker image
      run: docker build . --file Dockerfile --tag ${{secrets.DOCKER_USER}}/jupyter-book-extentensions:latest
    - name: Push the Docker image
      run: docker push ${{secrets.DOCKER_USER}}/jupyter-book-extentensions:latest
© www.soinside.com 2019 - 2024. All rights reserved.