CodeGym /课程 /Docker SELF /标签和镜像版本

标签和镜像版本

Docker SELF
第 14 级 , 课程 2
可用

8.1 Docker中的标签

在Docker中,标签是给镜像分配标记的过程,这简化了版本管理。这让部署和更新应用程序变得更加方便和可控。在这节课里,我们会详细讲解什么是标签,怎么用它们,以及哪些推荐实践能帮你更高效地使用它们。

Docker中的标签 (tag) 是一个标记,能用来识别镜像的具体版本。标签能简化变更追踪,并帮助选择适合不同环境(比如开发、测试和生产环境)的特定版本。

标签的基本概念:

  1. 唯一性: 标签能唯一标识镜像的具体版本。
  2. 版本化: 用标签标记镜像的版本,例如,v1.0, v2.0, latest
  3. 灵活性: 标签可用于创建对应开发阶段的镜像,例如,beta, stable, prod

8.2 如何使用标签

1. 为镜像分配标签

你可以在构建镜像时通过命令 docker build 的参数 -t 给镜像分配一个标签。

例子:

本例中,给镜像分配了名字 myapp 和标签 1.0

Terminal


docker build -t myapp:1.0 .

2. 为已有镜像添加额外标签

你可以通过命令 docker tag 给已有镜像添加更多的标签。

例子:

本例中为镜像 myapp:1.0 添加了额外的标签 latest

Terminal


docker tag myapp:1.0 myapp:latest

3. 在运行容器时使用标签

当你运行容器时,可以指定具体的镜像标签来使用。

例子:

本例中使用镜像 myapp 和标签 1.0 启动了一个容器。

Terminal


docker run -d myapp:1.0

8.3 标签实践

使用语义版本控制

语义版本控制 (Semantic Versioning) 是一种标准的版本分配方式,可帮助了解镜像中的更改级别。

语义版本控制的格式:


<major>.<minor>.<patch>

其中:

  • major: 主要的更改,与之前版本不兼容。
  • minor: 新的功能,与之前版本兼容。
  • patch: 修复的错误和其他小改动。

例子:

Terminal


docker build -t myapp:2.1.3 .

使用额外标签

额外标签可以用来表示镜像的状态,例如 betaalphastableprod 等。

例子:

Terminal


docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .

更新标签

在更新镜像时,建议更改标签以方便跟踪变化。标签 latest 经常用来表示镜像的最新版本。

例子:

Terminal


docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest

8.4 标签的应用示例

在不同环境中使用标签的示例:

示例 1: 开发

开发中经常会用到标注当前版本或开发状态的镜像标签,比如 dev

Terminal


docker build -t myapp:dev .
docker run -d myapp:dev

示例 2: 测试

在测试环境中会使用标注特定版本或状态的镜像标签,比如 beta

Terminal


docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta

示例 3: 生产

在生产环境中,使用稳定且经过验证的镜像版本很重要,这些版本通常使用 stableprod 或语义版本标签,比如 1.1.0-stable

Terminal


docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable

8.5 最佳实践

1. 始终使用语义化版本控制

遵循镜像的语义化版本控制。这样有助于清楚区分更改的级别并简化版本管理。

2. 使用清晰有意义的标签

使用能清楚反映镜像状态或目标的标签 (例如betastableprod)。

3. 避免在生产环境中使用 latest

latest 标签可能对开发和测试有用,但在生产环境中最好使用具体版本,以避免不可预测的更改。

4. 文档化标签的使用

记录标签在项目中的使用方式。这可以帮助团队更好地理解版本控制过程并减少错误的可能性。

带标签的 Dockerfile 示例

示例 1:创建和分配标签

Dockerfile

# 版本 1.0.0 的 Dockerfile 
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

用于构建和标记的命令

Terminal


docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable

示例 2:更新镜像并标记

Dockerfile

# 具有新功能的版本 1.1.0 的 Dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]

用于构建和标记的命令

Terminal

        
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION