在 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 镜像了! 🚀