Docker 镜像重命名【打上新的标签】
文章目录
- 1. 核心命令:docker tag
- 1.1. 操作步骤
- 1. 查看现有镜像
- 2. 执行重命名(打新标签)
- 3. 验证结果
- 4 删除旧的镜像名称(可选)
- 2. 重命名的实际用途
- 3. 重要注意事项
- 总结
给 Docker 镜像重命名(打上新的标签)是一个非常常见的操作,主要通过
docker tag
命令完成。以下是详细的方法和注意事项:
1. 核心命令:docker tag
命令格式:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
参数解释:
SOURCE_IMAGE[:TAG]
:现有的源镜像名称或 ID,可以包含标签(如v1.0
),默认为latest
。TARGET_IMAGE[:TAG]
:新的目标镜像名称和标签。
1.1. 操作步骤
1. 查看现有镜像
首先,列出所有镜像,找到你要重命名的镜像的 REPOSITORY
和 IMAGE ID
。
docker images
输出示例:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-old-image-name latest a1b2c3d4e5f6 2 hours ago 1.2GB
2. 执行重命名(打新标签)
使用 docker tag
命令为镜像创建一个新名称的引用。
示例 1:修改仓库名,标签不变(仍为 latest)
docker tag my-old-image-name:latest my-new-image-name:latest
示例 2:修改仓库名和标签
docker tag my-old-image-name:latest my-new-image-name:v1.0
示例 3:使用镜像 ID 进行重命名(如果镜像没有名字或避免拼写错误)
docker tag a1b2c3d4e5f6 my-new-image-name:latest
3. 验证结果
再次运行 docker images
,你会看到新旧两个名称指向同一个 IMAGE ID
。
REPOSITORY TAG IMAGE ID CREATED SIZE
my-old-image-name latest a1b2c3d4e5f6 2 hours ago 1.2GB
my-new-image-name latest a1b2c3d4e5f6 2 hours ago 1.2GB
my-new-image-name v1.0 a1b2c3d4e5f6 2 hours ago 1.2GB
这证明它们只是同一个镜像的不同别名(标签),不会占用额外的磁盘空间。
4 删除旧的镜像名称(可选)
重命名操作实际上是添加了一个新标签,旧的镜像名称依然存在。如果你希望清理旧名称,可以使用 docker rmi
。
注意:docker rmi
是删除镜像的标签。只有当最后一个标签被删除时,镜像层才会真正被删除。
# 删除旧的镜像标签(my-old-image-name:latest)
docker rmi my-old-image-name:latest# 再次查看,旧的名称消失了,但镜像本身(IMAGE ID)依然存在,因为还有新标签引用它
docker images
2. 重命名的实际用途
- 规范化命名:将凌乱的名称改为符合规范的名称(如
project-component:version
)。 - 推送至镜像仓库:为推送至 Docker Hub、Harbor 等私有仓库做准备,需要符合
[registry/]username/repository:tag
的格式。# 例如,推送至 Docker Hub docker tag my-app:latest my-dockerhub-username/my-app:latest docker push my-dockerhub-username/my-app:latest
- 版本管理:为同一镜像创建不同的版本标签(如
:prod
,:dev
,:v1.2.3
)。
3. 重要注意事项
- 非破坏性操作:
docker tag
不会修改镜像内容,只是创建一个新的引用。 - 共享镜像层:所有标签共享相同的镜像层,节省存储空间。
- 标签覆盖:如果新名称和标签已存在,该命令会覆盖现有的标签引用(不会删除旧的镜像层,但旧的标签名会指向新的镜像)。
- 无法直接“重命名”:Docker 没有
rename
命令。所谓的重命名就是创建一个新标签,然后选择性地删除旧标签。
总结
给 Docker 镜像重命名的标准流程是:
docker images
查看镜像ID或旧名称。docker tag <旧名称或ID> <新名称:标签>
创建新标签。- (可选)
docker rmi <旧名称:标签>
删除旧标签以保持整洁。 - 使用
docker images
验证结果。
这是一个安全、高效且标准的 Docker 镜像管理操作。