
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该镜像基于https://github.com/meltwater/docker-cleanup%E5%B9%B6%E5%81%9A%E4%BA%86%E5%B0%91%E9%87%8F%E4%BF%AE%E6%94%B9%EF%BC%8C%E7%94%A8%E4%BA%8E%E5%AE%9A%E6%9C%9F%E6%B8%85%E7%90%86%E9%80%80%E5%87%BA%E7%9A%84%E5%AE%B9%E5%99%A8%E3%80%81%E6%9C%AA%E8%A2%AB%E8%BF%90%E8%A1%8C%E4%B8%AD%E5%AE%B9%E5%99%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E9%95%9C%E5%83%8F%E5%92%8C%E5%8D%B7%E3%80%82
警告:除非仔细排除,否则此脚本会删除所有退出的容器、数据卷容器和未使用的镜像。若将/var/lib/docker挂载到容器中,会清理所有未使用的数据卷。如果与您的系统或Docker版本不兼容,可能会删除所有卷,甚至正在运行的容器的卷。
通常,任何退出的Docker容器会保留在磁盘上,直到使用docker rm -v清理。同样,不再使用的镜像也会保留。对于频繁启停容器的集群节点或Jenkins构建从节点,大量退出的容器和旧镜像版本会占用磁盘空间,尤其是持续重建的SNAPSHOT镜像会留下未标记的<none>镜像。
/var/lib/docker时)默认参数可通过docker run -e标志设置容器环境变量来覆盖:
"ubuntu:trusty, ubuntu:latest",默认清理所有未使用镜像"ubuntu:trusty, ubuntu:latest""my-container1, persistent-data""database-vol, caching",使用**All**可保留所有卷true或false,默认true(持续循环运行)1启用更多调试输出docker version --format '{{.Client.APIVersion}}'查看主机API版本注意:
KEEP_IMAGES、KEEP_CONTAINERS和KEEP_CONTAINERS_NAMED使用左锚定正则表达式。例如,镜像foo/bar:tag可被以下任一匹配:
foo/bar:tagfoo/barfoo/b[[:alpha:]]*/bar.*/.*:tag.*:tagfoo/*:tag但不会被以下匹配:
foo/bazbar:tag/bar:tag[[:alpha:]]*:tag默认情况下,所有
KEEP_*变量均设为**None**(等同于空字符串)。若要保留所有镜像、卷或容器(禁用对应清理功能),应使用**All**。
该镜像使用Docker客户端列出和删除容器及镜像,因此需要将Docker客户端和套接字映射到容器中。若映射/var/lib/docker目录,脚本还会清理孤立的Docker卷。
yamlcleanup: image: eeacms/docker-cleanup:2.1.0 environment: CLEAN_PERIOD: '86400' # 清理间隔:24小时 DEBUG: '0' # 禁用调试输出 DELAY_TIME: '900' # 延迟时间:15分钟 KEEP_CONTAINERS: '**All**' # 保留所有容器 KEEP_CONTAINERS_NAMED: '**All**' # 保留所有命名容器 KEEP_VOLUMES: '**None**' # 不保留未使用卷 KEEP_IMAGES: rancher/, busybox, tianon/ # 保留指定镜像 LOOP: 'true' # 循环运行 labels: io.rancher.scheduler.global: 'true' # 在所有节点运行 io.rancher.scheduler.affinity:host_label_ne: janitor.exclude=true # 排除特定节点 privileged: true volumes: - /var/run/docker.sock:/var/run/docker.sock # 映射Docker套接字 - /var/lib/docker:/var/lib/docker # 映射Docker数据目录(用于卷清理)
在/etc/systemd/system/docker-cleanup.service创建Systemd单元文件。使用CoreOS和Fleet时,添加X-Fleet部分以在所有集群节点调度该单元:
[Unit] Description=Cleanup of exited containers and unused images/volumes After=docker.service Requires=docker.service [Install] WantedBy=multi-user.target [Service] Environment=IMAGE=eeacms/docker-cleanup:latest NAME=docker-cleanup # 允许docker pull有足够时间 TimeoutStartSec=600 # 失败时重启 KillMode=none Restart=always RestartSec=15 ExecStartPre=-/usr/bin/docker kill $NAME ExecStartPre=-/usr/bin/docker rm $NAME ExecStartPre=-/bin/sh -c 'if ! docker images | tr -s " " : | grep "^${IMAGE}:"; then docker pull "${IMAGE}"; fi' ExecStart=/usr/bin/docker run \ -v /var/run/docker.sock:/var/run/docker.sock:rw \ -v /var/lib/docker:/var/lib/docker:rw \ --name=${NAME} \ $IMAGE ExecStop=/usr/bin/docker stop $NAME [X-Fleet] Global=true # 在所有节点运行
使用https://github.com/garethr/garethr-docker%E6%A8%A1%E5%9D%97%EF%BC%9A
classes: - docker::run_instance docker::run_instance: 'cleanup': image: 'eeacms/docker-cleanup:latest' volumes: - "/var/run/docker.sock:/var/run/docker.sock:rw" - "/var/lib/docker:/var/lib/docker:rw"
bashdocker run \ -v /var/run/docker.sock:/var/run/docker.sock:rw \ -v /var/lib/docker:/var/lib/docker:rw \ eeacms/docker-cleanup:latest
可使用Kubernetes DaemonSet配置在集群所有节点运行eeacms/docker-cleanup容器:
bashkubectl create -f contrib/k8s-daemonset.yml
包含Makefile以帮助开发中的重复命令:
bashmake help
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务