在 Docker 中,打 Tag(Tagging)?和?Push(Pushing)?是兩個關鍵操作,用于管理鏡像的版本并上傳到鏡像倉庫(如 Docker Hub、阿里云 ACR、Harbor 等)。
1. 打 Tag(Tagging)
作用:為 Docker 鏡像指定一個版本標簽,方便后續識別和管理。
語法
docker tag <SOURCE_IMAGE> <TARGET_IMAGE>:<TAG>
-
<SOURCE_IMAGE>
:本地已有的鏡像名稱或 ID -
<TARGET_IMAGE>
:新的鏡像名稱(通常包含倉庫地址) -
<TAG>
:版本標簽(如?latest
、v1.0
?等)
示例
# 假設本地有一個鏡像 ID 為 abc123,鏡像名為 my-flink-app
docker tag my-flink-app myrepo/my-flink-app:v1.0
-
這樣,
my-flink-app
?就被打上了?myrepo/my-flink-app:v1.0
?的標簽。
常見 Tag 命名方式
Tag 示例 | 說明 |
---|---|
myrepo/my-flink-app:latest | 默認最新版本 |
myrepo/my-flink-app:v1.0 | 語義化版本 |
myrepo/my-flink-app:20240501 | 日期版本 |
myrepo/my-flink-app:flink1.20 | 依賴版本 |
2. Push(Pushing)
作用:將本地打好 Tag 的鏡像上傳到遠程 Docker 倉庫(如 Docker Hub、私有倉庫)。
語法
docker push <IMAGE_NAME>:<TAG>
-
<IMAGE_NAME>
?必須包含倉庫地址(如?docker.io/username/repo
)。
示例
# 1. 先登錄 Docker Hub(或其他倉庫)
docker login# 2. 推送鏡像
docker push myrepo/my-flink-app:v1.0
-
如果?
myrepo
?是私有倉庫(如阿里云 ACR),需要先?docker login
?登錄。
推送流程
-
登錄倉庫(如果需要):
docker login registry.example.com
-
打 Tag:
docker tag my-flink-app registry.example.com/myteam/my-flink-app:v1.0
-
Push 到倉庫:
docker push registry.example.com/myteam/my-flink-app:v1.0
完整示例
假設我們有一個 Flink 應用鏡像?paimon-flink
,要推送到 Docker Hub:
# 1. 構建鏡像
docker build -t paimon-flink .# 2. 打 Tag(格式:docker.io/<用戶名>/<倉庫名>:<標簽>)
docker tag paimon-flink docker.io/yourusername/paimon-flink:v1.0# 3. 登錄 Docker Hub
docker login# 4. 推送鏡像
docker push docker.io/yourusername/paimon-flink:v1.0
推送成功后,可以在 Docker Hub(或其他倉庫)查看該鏡像,并在其他機器上通過?docker pull
?拉取:
docker pull docker.io/yourusername/paimon-flink:v1.0
總結
操作 | 命令 | 作用 |
---|---|---|
Tag | docker tag <源鏡像> <新鏡像>:<標簽> | 給鏡像打版本標簽 |
Push | docker push <鏡像>:<標簽> | 上傳鏡像到遠程倉庫 |
Pull | docker pull <鏡像>:<標簽> | 從遠程倉庫拉取鏡像 |
這樣,你就可以方便地管理和分發 Docker 鏡像了! 🚀