You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制Docker Compose使用镜像的特定提交哈希值?

强制Docker Compose使用特定版本镜像的解决方案

核心问题澄清

你混淆了GitHub仓库的提交哈希和Docker镜像的Digest哈希:仓库提交哈希对应代码版本,而镜像Digest是镜像本身的唯一标识,直接用仓库提交哈希作为镜像标识是无效的,这是导致问题的核心原因。


解决步骤

1. 获取目标提交对应的镜像Digest

首先拉取对应提交版本的镜像(该项目支持用提交哈希作为镜像标签):

docker pull ghcr.io/automatic1111/stable-diffusion-webui:1e0561c5cb6eba1e379f4c91648a2df8297059cc

拉取完成后,执行以下命令获取该镜像的唯一Digest(格式为sha256:xxxx):

docker inspect --format='{{.RepoDigests}}' ghcr.io/automatic1111/stable-diffusion-webui:1e0561c5cb6eba1e379f4c91648a2df8297059cc

2. 修正Docker Compose配置

在docker-compose.yml中,将服务的image字段改为镜像地址+Digest的格式,确保完全锁定镜像版本。示例配置:

services:
  stable-diffusion-webui:
    image: ghcr.io/automatic1111/stable-diffusion-webui@sha256:替换为上一步获取的Digest值
    profiles: ["auto"]
    # 移除或注释掉build字段(如果存在),避免触发本地构建覆盖镜像
    # build: ./path-to-build-context
    # 其他服务配置...

3. 清理缓存并重新部署

Docker会优先使用本地缓存的镜像,需要先清理可能冲突的缓存:

# 停止并移除当前容器
docker compose --profile auto down
# 删除本地的latest版本镜像(避免被自动拉取)
docker rmi ghcr.io/automatic1111/stable-diffusion-webui:latest
# 启动服务(无需--build,因为我们直接使用现成镜像)
docker compose --profile auto up -d

关键注意事项

  • 如果你的docker-compose.yml中包含build字段,执行up --build时会优先触发本地构建,完全忽略你指定的镜像。必须移除或注释build相关配置才能使用指定镜像。
  • 镜像Digest是不可变的,相比标签(如latest)能100%确保使用特定版本,不会被远程仓库的更新覆盖。

内容的提问来源于stack exchange,提问作者kafka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:27:28