博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第 3 章 镜像 - 018 - 镜像命名的最佳实践
阅读量:6720 次
发布时间:2019-06-25

本文共 2120 字,大约阅读时间需要 7 分钟。

为镜像命名

创建镜像时 docker build 命令时已经为镜像取了个名字,例如: 

docker build -t ubuntu-with-vi

这里的 ubuntu-with-vi 就是镜像的名字。通过 dock images 可以查看镜像的信息。

1 root@ubuntu:~# docker images ubuntu-with-vi2 REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE3 ubuntu-with-vi      latest              b5410dfa9a42        11 days ago         170MB4 root@ubuntu:~#

 

这里注意到 ubuntu-with-vi 对应的是 REPOSITORY,而且还有一个叫 latest 的 TAG

实际上一个特定镜像的名字由两部分组成:

  • repository
  • tag
[image name] = [repository]:[tag] 

如果执行 docker build 时没有指定 tag,会使用默认值 latest。其效果相当于:

docker build -t ubuntu-with-vi:latest

tag 常用于描述镜像的版本信息,比如 httpd 镜像:

当然 tag 可以是任意字符串,比如 ubuntu 镜像:

 

 

千万别被 latest tag 给误导了。latest 其实并没有什么特殊的含义。当没指明镜像 tag 时,Docker 会使用默认值 latest,仅此而已。虽然 Docker Hub 上很多 repository 将 latest 作为最新稳定版本的别名,但这只是一种约定,而不是强制规定。所以我们在使用镜像时最好还是避免使用 latest,明确指定某个 tag,比如 httpd:2.3,ubuntu:xenial。

 

tag 使用最佳实践

每个 repository 可以有多个 tag,而多个 tag 可能对应的是同一个镜像。

假设现在发布了一个镜像 myimage,版本为 v1.9.1。那么我们可以给镜像打上四个 tag:1.9.1、1.9、1 和 latest。

 

我们可以通过 docker tag 命令方便地给镜像打 tag。

1 docker tag myimage-v1.9.1 myimage:12 docker tag myimage-v1.9.1 myimage:1.93 docker tag myimage-v1.9.1 myimage:1.9.14 docker tag myimage-v1.9.1 myimage:latest

 

一段时间后发布了 v1.9.2。这时可以打上 1.9.2 的 tag,并将 1.9、1 和 latest 从 v1.9.1 移到 v1.9.2。

 

1 docker tag myimage-v1.9.2 myimage:12 docker tag myimage-v1.9.2 myimage:1.93 docker tag myimage-v1.9.2 myimage:1.9.24 docker tag myimage-v1.9.2 myimage:latest 

之后,v2.0.0 发布了。这时可以打上 2.0.0、2.0 和 2 的 tag,并将 latest 移到 v2.0.0。

 

 

1 docker tag myimage-v2.0.0 myimage:22 docker tag myimage-v2.0.0 myimage:2.03 docker tag myimage-v2.0.0 myimage:2.0.04 docker tag myimage-v2.0.0 myimage:latest

 

 

 这种 tag 方案使镜像的版本很直观,在选择非常灵活:

  1. myimage:1 始终指向 1 这个分支中最新的镜像。
  2. myimage:1.9 始终指向 1.9.x 中最新的镜像。
  3. myimage:latest 始终指向所有版本中最新的镜像。
  4. 如果想使用特定版本,可以选择 myimage:1.9.1、myimage:1.9.2 或 myimage:2.0.0

 

 

----------------------引用来自-----------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587619&idx=1&sn=084d11955c8d4ca55eaf118e6784d689&chksm=8d3080baba4709ac8891081e6744ca50b4a02cf67c28348305d1a6b0e8ca582e29f3745c422d&scene=21#wechat_redirect

转载于:https://www.cnblogs.com/gsophy/p/10238455.html

你可能感兴趣的文章
Linux/安卓+SPI以太网项目
查看>>
PostgreSQL MySQL 的一次速度测试
查看>>
C 语言程序设计
查看>>
Dns信息收集工具集合
查看>>
MQ产品比较-ActiveMQ-RocketMQ
查看>>
yii框架cridview的ajax更新
查看>>
STL容器选择
查看>>
android:layout_gravity 和 android:gravity 的区别
查看>>
嵌入式C题
查看>>
maven学习笔记
查看>>
说说Java线程池
查看>>
Linux挂载命令mount用法及参数详解
查看>>
Nginx 动静分离
查看>>
MySQL如何实现数组功能
查看>>
Android第四十七期 - WheelView沉浸式菜单栏
查看>>
Spring Boot--模板从JSP到Freemarker的若干问题
查看>>
Java内存模型的探究
查看>>
CentOS6.5 从源码编译安装 GCC-4.9.1 全程实录《第二部分:编译,安装,测试》
查看>>
反查bash历史记录--用Enki学Linux系列(16)
查看>>
Stateful firewall
查看>>