在线上环境运行的 Docker 的时候,部署之后往往没有清理旧版本的镜像和关闭的容器。如此一来,长时间运行 Docker,尤其是频繁地更新镜像、启动容器,会消耗大量的磁盘空间。
本文汇总几条用来清理 Docker 的命令。
docker ps --filter status=dead --filter status=exited -aq | xargs -r docker rm -v
清理 dangling 的镜像。
docker images -q -f dangling=true | xargs -r docker rmi
清理所有当前不在运行的镜像1。
docker rmi $(grep -xvf <(docker ps -a --format '{{.Image}}') <(docker images | tail -n +2 | grep -v '<none>' | awk '{ print $1":"$2 }'))
清理一周前的镜像。
docker images --no-trunc --format '{{.ID}} {{.CreatedSince}}' | grep ' weeks' | awk '{ print $1 }' | \
xargs --no-run-if-empty docker rmi
docker volume ls -q -f dangling=true | xargs -r docker volume rm