该镜像基于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
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务