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

私有Docker Registry垃圾清理遇配置文件不存在错误求助

问题排查与解决方法

核心原因

你执行docker exec时指定的/home/config.yaml是宿主机的路径,但docker exec的命令是在容器内部运行的,容器里并没有这个路径下的文件,所以报错找不到。

解决步骤

1. 先确认容器内的配置文件位置

从你的docker ps输出看,容器启动命令是/entrypoint.sh /etc…,默认registry容器的配置文件路径是/etc/docker/registry/config.yml,先检查容器内是否存在这个文件:

docker exec e6588d7e05af ls /etc/docker/registry/

2. 选择合适的执行方式

方式一:使用容器内已有的配置文件执行

如果容器内的config.yml已经正确配置了存储路径(和你宿主机的/home/ubuntu/data/docker/registry/v2/对应),直接执行:

docker exec e6588d7e05af registry garbage-collect --dry-run --delete-untagged /etc/docker/registry/config.yml

方式二:挂载宿主机配置文件到容器后执行

如果宿主机的config.yaml未挂载到容器,先停止容器,重新启动时挂载配置文件和存储目录:

# 停止现有容器
docker stop ubuntu_registry_1
# 重新启动容器,挂载存储目录和配置文件
docker run -d -p 443:443 --name ubuntu_registry_1 \
  -v /home/ubuntu/data/docker/registry/v2/:/var/lib/registry \
  -v /home/config.yaml:/etc/docker/registry/config.yml \
  registry:2
# 执行垃圾清理
docker exec e6588d7e05af registry garbage-collect --dry-run --delete-untagged /etc/docker/registry/config.yml

方式三:直接用镜像离线执行垃圾清理(无需运行中的容器)

可以不进入运行中的容器,直接启动临时容器执行清理,完成后自动销毁:

docker run --rm \
  -v /home/ubuntu/data/docker/registry/v2/:/var/lib/registry \
  -v /home/config.yaml:/etc/docker/registry/config.yml \
  registry:2 registry garbage-collect --dry-run --delete-untagged /etc/docker/registry/config.yml

注意事项

  • 执行真正的垃圾清理前(去掉--dry-run参数),建议先停止registry容器,避免清理过程中有镜像推送/拉取操作,导致数据不一致。
  • 确认config.yaml里的rootdirectory在容器内的路径正确(比如挂载后容器内对应/var/lib/registry)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:21:19