Docker 中如何修改镜像名(仓库名)或容器名?

镜像改名用 docker tag 旧名 新名(加别名,再 docker rmi 旧名删除别名);容器改名用 docker rename。本文说明名称与 ID 的关系及常见操作。

最佳实践
Docker 中如何修改镜像名(仓库名)或容器名?封面

做法:镜像没有真正的"重命名",用 docker tag 旧名:标签 新名:标签 给同一镜像加一个新名字(别名),再用 docker rmi 旧名 删掉旧别名——镜像数据(ID)不变;容器改名直接 docker rename 旧名 新名,即时生效、不影响运行。

镜像改名:tag + rmi

镜像名只是指向镜像 ID(如 d583c3ac45fd)的别名,一个镜像可以有任意多个名字:

# 加新名
docker tag myapp:1.0 registry.example.com/team/myapp:1.0

# 确认两个名字指向同一 ID
docker images | grep myapp

# 删掉旧名(只是删别名,镜像还在)
docker rmi myapp:1.0

注意:docker rmi 删的是标签;只有当镜像没有任何标签且无容器引用时,镜像数据才真正被删除。

典型用途

  • 推送私有仓库前docker tag myapp:1.0 registry.example.com/team/myapp:1.0 && docker push ...
  • 规范命名:把随手起的 test123 改成规范的 team/service:版本
  • latest 指针调整docker tag myapp:1.2 myapp:latest 然后删旧 latest

容器改名:rename

docker rename old_name new_name

运行中也能改,进程无感知。compose 管理的容器不建议手改(下次 up 会按 yml 里的名字重建)。

观测云对照

改名不停观测。 DataKit 按容器标签/镜像等元数据打标采集,容器或镜像改名后指标与日志链路自动跟随新名称,检索历史数据也不中断。

常见问题(FAQ)

Q:docker tag 会复制一份镜像占双倍磁盘吗?
A:不会。tag 只是别名,分层数据共享,几乎不占额外空间。

Q:rmi 报 "image is being used by running container"?
A:有容器在用该镜像,先停删容器;或确认你只是想删标签——删标签在有容器引用时也会受限,可 -f 强制(谨慎)。

Q:仓库地址改变(迁 registry)怎么批量改名?
A:docker images --format '{{.Repository}}:{{.Tag}}' | grep old-registry | while read i; do docker tag $i ${i/old-registry/new-registry}; done

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台