docker compose 中的build如何指定镜像名称
·
出现这种情况通常是因为现有容器还指向旧镜像,或项目里还保留着旧的自动命名镜像(例如 <project>_frontend)。docker compose images 会按项目中现有容器来列出镜像,所以仅改了 image: 并 build,但没有用新镜像重建容器时,会一直看到旧名字。
一步到位的做法
# 1) 停并删掉旧容器(避免占用旧镜像)
docker compose down
# 2) 重新构建(可选:加 --no-cache / --pull)
docker compose build frontend
# 或:docker compose build --no-cache --pull frontend
# 3) 用新镜像重建并启动容器
docker compose up -d frontend
# 4) 查看结果(现在应显示新 image 名)
docker compose images
不想 down 全部服务?只重建 frontend
# 强制用新镜像重建 frontend 容器
docker compose up -d --build --force-recreate frontend
docker compose images
清理旧的匿名/自动命名镜像(可选)
如果之前没写 image:,Compose 会生成 <project>_frontend 这样的镜像名;改了 image: 后旧镜像还会留在本地,你可以手动清理:
docker image ls | grep frontend
docker image rm <old-image-id-or-name> # 若未被容器占用
# 或清理悬挂层
docker image prune -f
常见踩坑速查
-
只执行了
docker compose build,但没执行up重建容器 → 仍显示旧镜像名。 -
修改了
image:在某个覆盖文件里(如docker-compose.override.yml),运行时未带上该文件:docker compose -f docker-compose.yml -f docker-compose.override.yml up -d --build -
同一项目名下存在旧容器(即便是停止状态),
docker compose images仍可能显示对应旧镜像 → 先rm/down再重建。
按上面步骤做完,再跑一次 docker compose images 与 docker images | grep frontend,就能同时确认服务引用和本地镜像列表都已经是新名称了。
更多推荐
所有评论(0)