原文:
www.kdnuggets.com/how-to-use-docker-tags-to-manage-image-versions-effectively
编辑器提供的图片 | Midjourney 和 Canva
了解如何使用 Docker 标签来管理不同版本的 Docker 镜像,确保一致和有序的开发工作流。本指南涵盖了标记、更新和维护 Docker 镜像的最佳实践。
1. Google 网络安全证书 - 快速进入网络安全职业生涯。
2. Google 数据分析专业证书 - 提升你的数据分析能力
3. Google IT 支持专业证书 - 支持你的组织的 IT
在你开始之前:
-
你应该在开发环境中安装 Docker。如果还没有,获取 Docker。
-
一个你想 Docker 化的示例应用。如果你愿意,可以使用 GitHub 上的这个示例。
Docker 标签是一个指向存储库中特定镜像的标签。默认情况下,如果未指定标签,Docker 使用 latest
标签。但如果你正在开发应用并在版本间进行改进,你可能希望添加更明确的标签。这些标签对于区分不同版本或状态的镜像非常有用。
假设你有一个 Python 项目:一个用于库存管理的 Flask 应用,所有必需的文件都在项目目录中:
project-dir/
├── app.py
├── Dockerfile
├── requirements.txt
你可以在构建镜像时进行标签,如下所示:
$ docker build -t image_name:tag_name
现在让我们构建 inventory-app
镜像并给它打标签:
$ docker build -t inventory-app:1.0.0 .
在这里:
-
inventory-app
是存储库名称或镜像名称。 -
1.0.0
是此特定镜像构建的标签。
你可以运行 docker images
命令来查看带有指定标签的新构建镜像:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
inventory-app 1.0.0 32784c60a992 6 minutes ago 146MB
你也可以给现有的镜像打标签,如下所示:
$ docker tag inventory-app:1.0.0 inventory-app:latest
在这里,我们将现有的镜像 inventory-app:1.0.0
标记为 inventory-app:latest
。你会看到我们有两个不同标签的 inventory-app 镜像,并且它们的镜像 ID 相同:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
inventory-app 1.0.0 32784c60a992 6 minutes ago 146MB
inventory-app latest 32784c60a992 5 minutes ago 146MB
要共享你的 Docker 镜像,你可以将它们推送到 Docker 存储库(如 DockerHub)。你可以注册一个免费的 DockerHub 账户,登录并推送镜像。你应该首先登录 DockerHub:
$ docker login
系统会提示你输入用户名和密码。经过身份验证成功后,你可以使用 docker push
命令推送已标记的镜像。
确保你的仓库名称与你的 Docker Hub 用户名或组织匹配。如果你的 Docker Hub 用户名是 user
,并且你想推送镜像的版本为 1.0.1,你可以将镜像标记为 user/inventory-app:1.0.1
:
$ docker tag user/inventory-app:1.0.1
$ docker push user/inventory-app:1.0.1
当你需要使用特定版本的镜像时,可以使用标签来拉取它:
$ docker pull user/inventory-app:1.0.1
这里是标记 Docker 镜像时的一些最佳实践:
-
使用语义版本控制:遵循如
MAJOR.MINOR.PATCH
(1.0.0, 1.0.1)这样的版本控制方案。这有助于识别更改的重要性。 -
避免在生产环境中使用
latest
:在生产部署中使用明确的版本标签。 -
在 CI/CD 管道中自动化标记:将 Docker 标记集成到你的 CI/CD 管道中,以确保一致和自动的版本控制。
-
在标签中包含元数据:如果有意义的话,可以在标签中添加构建号、提交哈希或日期。
遵循这些实践来使用 Docker 标签,你可以保持一组干净、组织良好且有版本控制的 Docker 镜像。
这里有几个你会觉得有用的资源:
Bala Priya C**** 是来自印度的开发者和技术作者。她喜欢在数学、编程、数据科学和内容创作的交汇点上工作。她的兴趣和专长领域包括 DevOps、数据科学和自然语言处理。她喜欢阅读、写作、编码和喝咖啡!目前,她正在通过撰写教程、操作指南、观点文章等来学习和与开发者社区分享她的知识。Bala 还创建了引人入胜的资源概述和编码教程。