docker妙用 篇十:被忽视的存在——docker镜像标签,到底有多重要

2023-06-12 21:58:55 26点赞 175收藏 8评论

提示:本篇文章约3995字符,阅读大约需要6分钟。

关注专栏不迷路

关注图关注图

写在前面

如果你刚刚在618入手NAS,《docker妙用》专栏的前三篇会帮助你初步了解docker。

上一篇我们讲了常用的docker命令:

你已经是个成熟的值友了!要学会自己根据教程定制属于自己的docker容器了!

其实,之前nastool的事件是一个非常典型的例子,遇到某个容器镜像的重大版本更新。或是添加了许多你不需要的功能,或是删除了非常重要的功能。都需要我们根据自己的需要选择合适的镜像版本,这个时候那个平时不起眼的docker镜像标签就起到了非常重要的作用。

注:本专栏所有文章适用于具备docker功能的绝大部分nas。如果想要适应不同教程所使用的nas系统的不同,可以考虑搭建Portainer。为适应不同品牌NAS的操作系统,本专栏的后续文章也将基于Portainer打造

群晖(Synology)DS923+4盘位万兆扩展NAS网络存储服务器文件共享自动备份私有云团队云盘4900元NAS市场领导者群晖的家用旗舰产品,4盘位中的高端首选。京东去购买威联通(QNAP)TS-464C宇宙魔方四核心处理器网络存储服务器内置双M.2插槽NAS私有云(453Dmini升级)2898元家用4盘位旗舰款,四核心处理器,双2.5GbE口,NVMe双M.2插槽。京东去购买

Docker镜像标签的使用和重要性

Docker是一种开源的应用容器引擎,它允许开发者将应用及其依赖项打包到一个可移植的容器中,然后发布到任何流行的Linux机器上或者Windows上。在这个过程中,Docker镜像是不可或缺的一部分,它是Docker容器运行时的只读模板。每个镜像都由一系列的层(layers)组成,这些层在构建镜像时创建。而Docker镜像标签则是这些镜像的一个重要组成部分,用来唯一标识不同的镜像。

Docker镜像标签的使用

Docker镜像标签是附加到镜像ID上的,它是一种用户友好的别名,用于识别特定的镜像版本。在Docker的世界里,镜像标签的使用是非常灵活的,可以是任何有意义的字符串。例如,一个常见的标签是版本号,如 “v1.0“,”v2.0“,”latest“等。

在Docker中,我们可以使用标签来拉取特定版本的镜像。例如,如果我们想要拉取 Ubuntu 18.04 的镜像,我们可以运行 docker pull ubuntu:18.04。在这个例子中,“ubuntu”是镜像的名称,“18.04”是镜像的标签,代表这个镜像的版本。

Docker镜像标签的重要性

(废话,可跳过)

Docker镜像标签在容器化应用的生命周期管理中扮演着至关重要的角色,因为它们帮助我们明确和跟踪不同的镜像版本。

  1. 版本控制: 如前所述,标签常常用于表示镜像的版本。这使得开发者可以轻松地管理和跟踪不同的应用版本,同时也使得回滚到旧版本成为可能。

  2. 易于管理: 标签的另一个关键功能是提供了一种简单的方法来识别和引用镜像。没有标签,我们就需要使用复杂的镜像ID来引用特定的镜像,这显然是不现实的。

  3. 部署策略: 标签可以帮助我们实现不同的部署策略。例如,我们可以使用 “latest” 标签来表示最新的稳定版本,然后在生产环境中部署它。或者,我们可以使用 “dev” 标签来表示正在开发中的版本,然后在测试环境中部署它。

总的来说,Docker镜像标签是一种强大的工具,它可以帮助我们更有效地管理和部署我们的应用。

然而,值得注意的是,使用Docker镜像标签时也有一些最佳实践:

  1. 自动化标签生成: 尽可能地自动化你的容器镜像的生成。例如,你可以使用Git的命令来获取你的仓库的最新提交,然后使用这个提交的哈希值作为镜像的标签。

  2. 标签的自动化管理: 利用Makefile等工具可以自动化管理Docker镜像标签。例如,你可以在Makefile中定义如何构建、标记和推送你的镜像,然后通过简单的命令(如 make build push)来生成带有自动化标签的新镜像。

  3. 语义版本化: 语义版本化也是一个非常有用的工具,尤其是当你的镜像被许多用户使用时。你可能希望开始标记与你项目路线图中的主要里程碑相匹配的稳定发布。然而,这是一个需要手动进行的过程,所以它需要与我在这里提到的自动化过程一起使用。

  4. 使用标签进行追溯: 一个主要的好处是,通过将对应的提交哈希作为标签,可以很容易地追溯到特定的时间点,知道应用程序在那个特定的历史时刻看起来如何,表现得如何,最重要的是,可以找出是谁破坏了应用程序。

关于latest标签的误解

latest标签在Docker中经常被误解。许多人认为latest标签是指向镜像的最新稳定版本,但实际上,它只是默认的标签,当你不明确提供一个标签时,Docker会默认使用latest标签。

例如,当你运行docker pull ubuntu时,如果你没有指定一个标签,Docker会默认给你ubuntu:latest镜像。然而,ubuntu:latest不一定是Ubuntu最新的稳定版本,而是镜像创建者指定为latest的那一个版本

不加标签的pull命令不加标签的pull命令

仍然用Ubuntu来举例子,在docker hub上,使用Newest排序,排在最上面的并不是latest,而是ubuntu:rolling,这个标签指向的是最新发布的 Ubuntu 版本,无论这个版本是否是长期支持(LTS)版本。这意味着它将始终引用 Ubuntu 最新发布的版本;

Ubuntu镜像首页Ubuntu镜像首页

下一个”ubuntu:mantic“这个标签表示的是 Ubuntu 23.10 版本,这个版本的代号是 “Mantic Minotaur”。根据 Ubuntu 的发布声明,这个版本会得到支持直到 2024 年 7 月;

mantic标签mantic标签

而”ubuntu:latest“标签通常指向Ubuntu的最新的长期支持(LTS)版本。根据最新的信息,”ubuntu:latest”目前对应的是Ubuntu 22.04.2 LTS

latest标签latest标签

镜像的创建者可以选择任何版本的镜像打上latest标签。例如,他们可以选择一个特定的稳定版本,或者选择正在开发中的版本,这完全取决于他们的需求。

因此,使用latest标签可能会有一定的风险,因为你无法确切知道你正在获取哪个版本的镜像。如果你需要一个特定版本的镜像,最好明确指定标签,例如ubuntu:20.04

如何选择正确的docker标签

了解镜像的版本策略

不同的镜像可能会有不同的版本策略和标签命名规则。首先,你需要了解这个镜像是如何进行版本管理的。例如,某些镜像可能会使用语义版本控制,这种情况下,你可以看到像 “v1.0.0” 这样的标签。有些镜像可能会使用日期作为标签,比如 “2021.03.01”。还有些镜像可能会使用特定的代码提交哈希作为标签。

查看可用的镜像标签并选择

你可以在Docker Hub或者其他Docker镜像仓库中查看一个镜像的所有可用标签。这通常会在镜像的详情页面中列出。这一步是最重要的,很多情况下,你可以通过多种方法来获得实际需要拉取的版本详情,进而选择最适合自己镜像版本,而非一味地拉取带有”latest”标签的版本。

当然,这里的“多种方法”就考验你的信息搜集能力了,以hectorqin/reader为例。

项目的GitHub页面:

reader项目详情页reader项目详情页

社群信息:

reader 3.1.0更新说明reader 3.1.0更新说明

都可以获得版本的更新信息。

拉取镜像

最后,当你确定了你需要的标签之后,你就可以使用 docker pull 命令来拉取镜像了。例如,如果你想要拉取 Ubuntu 18.04 的镜像,你可以运行 docker pull ubuntu:18.04。在这个例子中,“ubuntu”是镜像的名称,“18.04”是镜像的标签。

总结

Docker镜像标签是一种强大的工具,能够帮助我们更有效地管理和部署我们的应用。通过正确地使用Docker镜像标签,我们可以提高我们的工作效率,提高我们应用的质量,并确保我们的系统的稳定性和可靠性。

下期预告:从下期开始,我将对nastool的教程进行最终版本的更新(毕竟作者已经宣布不再进行更新了),帮助值友搭建一个完全体nastool。

这就是本期的全部内容了,如果这篇文章对你有帮助的话,欢迎你在评论区多多讨论,也欢迎关注、点赞、打赏一键三连,你的支持对我非常重要。

我是冥冰薇,点个关注不迷路,我们下期再见。

被忽视的存在——docker镜像标签,到底有多重要

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2599元起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2849元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3299元起

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

2190.84元起

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

2179元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1896.01元起

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

4099元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

1199元起

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

2000元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1899元起

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

2699元起

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

8899元起

QNAP 威联通 TS-664 NAS存储 黑色(N5105 4GB)

QNAP 威联通 TS-664 NAS存储 黑色(N5105 4GB)

5280元起

Synology 群晖 DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

Synology 群晖 DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

1549元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1699元起

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

1899元起
8评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
175
扫一下,分享更方便,购买更轻松