【K8S】docker打过tag标签后向镜像仓库推送镜像(push)

资料1

  1. 首先,确保你已经登录到 Docker 仓库。可以使用以下命令登录到 Docker 仓库:
docker login

2.然后,使用以下命令将本地的 Docker 镜像标记为指定的仓库和标签:

docker tag <本地镜像名称>:<标签>   <仓库地址>/<镜像名称>:<标签>

例如,如果你的本地镜像名称是 my-image,仓库地址是 my-registry.com,镜像名称是 my-image,标签是 latest,则命令如下:

docker tag my-image my-registry.com/my-image:latest   //本地镜像是latest,可以不带tag,会自动带上latest

想给本地镜像打tag,可以不带仓库地址;如果要想推送到仓库,就必须带仓库地址,因为后面的docker push 命令,会默认把 第一个斜线 前面的内容当做仓库,如果没有仓库地址,会带上默认的仓库地址,类似 “https://index.docker.io/v1” ,后果是这个地址要么不通,要么你上传到错误地方了

3.最后,使用以下命令将标记的镜像推送到指定的仓库:

docker push <仓库地址>/<镜像名称>:<标签>

例如,如果你的仓库地址是 my-registry.com,镜像名称是 my-image,标签是 latest,则命令如下:

docker push my-registry.com/my-image:latest

2. 资料2

推送镜像

在推送前,必须给镜像打标签,否则推送失败,其实打标签就是定义一个版本标识

我们看下未打标签推送的提示信息,其中swr:6666指向镜像仓库:

$ docker push swr:6666/ems/mytest:v2
The push refers to a repository [swr:6666/ems/mytest]
An image does not exist locally with the tag: swr:6666/ems/mytest

An image does not exist locally with the tag,此时不存在v2这个版本号

看下完整的流程:

$ docker images|grep mytest
ems/mytest               latest              fa80b1ed50a0        About an hour ago   759.8 MB   
$ docker tag fa80b1ed50a0 swr:6666/ems/mytest:v2
$ docker push swr:6666/ems/mytest:v2
The push refers to a repository [swr:6666/ems/mytest]
ef36103e327a: Mounted from zenap/cn-naf
d4a509b758e2: Mounted from zenap/cn-naf
2135a014abb0: Mounted from zenap/cn-naf
4d1de02cb818: Pushed
.....
v2: digest: sha256:17d3934291b3d48dd3c219ba23de9412c2edd6df1a27d1d1ca23be5b1f4bd9ca size: 8479

可以看到默认的版本号是latest ,你可以新增一个v2版本

docker tag详解

在此之前,先学习一下名称概念:

runoob@runoob:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
runoob/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB
runoob/ubuntu       v2                  70bf1840fd7c        17 hours ago         158.5 MB
runoob/ubuntu       v3                  80bf1t40fn7d        17 hours ago         158.5 MB
ubuntu              15.10              90d5884b1ee0        6 days ago           188 MB         ‘本地原始的镜像’
  • tag 就是版本号
  • IMAGE ID 就是镜像id,是个字符串
  • REPOSITORY 是镜像的仓库

docker tag命令语法:

语法一:

docker tag [镜像ID] [镜像名称]
  • 镜像名称格式为 [REGISTRYHOST/][USERNAME/]NAME[:TAG]

    例 docker tag90d5884b1ee0 runoob/ubuntu:v3

语法二:
或通过REPOSITORY替换镜像id:
docker tag IMAGE[:TAG] [镜像名称]

[:TAG]是镜像的版本,如果不指定版本,默认是lastest,如果不存在laster版本,那么必须制定一个。因为多个镜像的REPOSITORY可以相同,版本不同,因此为了分辨,需要指定!

例 docker tag ubuntu:15.10 runoob/ubuntu:v3

参考

【Docker】从零开始:9.Docker命令:Push推送仓库(Docker Hub,阿里云)