CodeGym /Adesua ahorow /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. 為構建映像指定標籤

你可以在構建映像時通過使用 -t 參數的 docker build 命令為映像指定標籤。

範例:

在這個例子中,為映像指定名稱 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 .

使用附加標籤

附加標籤能用來標示映像的狀態,比如 beta, alpha, stableprod

範例:

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: 生產環境

在生產環境中,必須使用穩定且已檢測的映像版本,標籤如 stable, prod,或者語義版本,例如 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