docker标签的简单介绍

2023年 7月 16日 70.3k 0

20190210.png如果你已经开始使用docker,你肯定遇到过docker的标签,他们通常看起来像“my_image_name:v1”,其中冒号后面的部分称为标记,标记image时不总是标记,文下会有解释

什么是Docker标签?

那么,Docker标签到底是什么?简单来说,Docker标签传达有关特定images版本/变化的有用信息。它们是image ID的别名,通常如下所示:965b523dfe25。这种类似与git的提交版本号。

标签发挥作用的两种最常见的情况是:

  • 构建镜像时,我们使用以下命令:
  • docker build -t username / image_name:tag_name .

    让我们试着分解一下这个命令的作用。我们告诉Docker守护进程获取当前目录中存在的Docker文件(这就是最后 .的目的)。接下来,我们告诉Docker守护程序构建镜像并为其指定标记。如果你运行docker images,你应该看到一个存储库是username/image_name和标签的imagetag_name

    username/image_name 不是指定image名称的强制格式。当你需要将image推送到Docker仓库时,避免再次标记image,这仅作为一个有用的约定。

    你的image可以根据需要命名。对于公共Docker仓库,在命名image时,你被限制为两级层次结构。例如,你的image不能具有名称a/b/c:1.此限制通常不存在于私有仓库中。如前所述,并非强制要求指定一个tag_name.我们将很快看到在这种情况下会发生什么。

    2.通过tag命令显式标记image。

    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

    这个命令只是通过创建的名称的别名(参考)TARGET_IMAGE 是指SOURCE_IMAGE.这就是它所做的一切。这就像为现有image指定另一个名称来引用它。注意标签如何在这里被指定为可选的[:TAG]

    如果不指定标签会发生什么?

    好的,现在让我们来看看在标记image时没有指定标记时会发生什么。这是latest标签进入image的地方。每当image被标记而没有显式标记时,latest默认情况下会给出标记。这是一个令人遗憾的命名选择,会引起很多混乱。但我喜欢将它视为未指定image时为image指定的默认标记。

    latest由于期望它是image的最新版本,特别是在Dockerfiles中引起了很多混乱。让我们用一个例子来考虑各种场景:

    场景1:

    假设我们的Dockerfile中存在以下语句:

    From debian

    由于我们没有指定任何标记,Docker将添加latest标记并尝试拉取imagedebian:latest

    场景2:

    From debian:9.3

    由于此处明确提到了标记,因此Docker将拉出标记为9.3的Debian image

    另外要记住的是,没有规则说明image只需要一个标签。image可以有多个标签,它们通常用于指定主要版本和次要版本。例如,参考一下:20190210-1.png

    在撰写本文时,Debian image的最新标记指向9.3版本和9版本。每当主要版本或次要版本碰撞时,image很可能在将来发生变化。

    请注意,用于定义版本控制的标记是遵循的约定,但标记不是为此目的而设计的

    总之,最新的不是特殊标签

    到目前为止我们所介绍的主要内容是最新版本latest与其他标签一样。开发人员有责任正确标记image,以便latest始终指向image的最新稳定版本。

    因此,我们在拉动image时没有在我们的Dockerfiles中明确指定标记,因为我们最终可能会得到与之前使用的基本image完全不同的版本。 无法保证它是否会出现不同版本自己的差异。 即使旧版本也可以标记为最新版本。

    学习更多

    学习如何使用Docker CLI命令,Dockerfile命令,使用这些命令可以帮助你更有效地使用Docker应用程序。查看Docker文档和我的其他帖子以了解更多信息。

    • docker目录
    • 白话容器

    相关文章

    LeaferJS 1.0 重磅发布:强悍的前端 Canvas 渲染引擎
    10分钟搞定支持通配符的永久有效免费HTTPS证书
    300 多个 Microsoft Excel 快捷方式
    一步步配置基于kubeadmin的kubevip高可用
    istio全链路传递cookie和header灰度
    REST Web 服务版本控制

    发布评论