为了解决“无法连接到 docker docker daemon”问题,找出 docker 组中的用户
grep 'docker' /etc/group
然后以这些用户之一的身份运行 docker cleanup 命令(您需要将其转换为您在 cron 或其他东西上运行的脚本)。或与其他用户一起获得 sudo 访问权限并使用 sudo:
sudo docker rmi [image_name_here]
这是示例清理脚本(/usr/local/bin/clean_up_docker_stuff_on_ci_agent
或类似脚本)的内容:
#!/bin/bash
# stop containers that have been running for more than a day (may not be valid in your context if you intend run things for a long time)
docker ps -a | egrep " days" | awk '{print $1}' | grep -v CONTAINER | xargs docker stop
# remove all exited containers
docker ps -a | egrep "Exited|Created" | awk '{print $1}' | grep -v CONTAINER | xargs docker rm
# remove old images
docker images | egrep 'weeks|months' | awk '{print $1 ":" $2}' | xargs docker rmi -f
docker images | egrep 'weeks|months' | grep '<none>' | awk '{ print $3 }' | xargs docker rmi -f
# kill stray volumes
docker volume ls -qf dangling=true | xargs -r docker volume rm
正如 Szymon Stepniak 在他的回答中提到的那样,如果您使用的是 docker >= 1.13,则有更简单的选项。
cron 示例(每小时 20 次):
20 * * * * /usr/local/bin/clean_up_docker_stuff_on_ci_agent > /dev/null 2>&1