如何一键清理所有已停止的容器、未使用的镜像、网络和未挂载的数据卷?
在 Docker 中,你可以使用一个非常强大的内置命令来一键清理所有未使用的资源(包括已停止的容器、未使用的镜像、未挂载的数据卷和未使用网络)。
🚀 最强一键清理命令
在终端中运行以下命令:
bash
docker system prune -a --volumes -f
📝 参数详细解释:
docker system prune:Docker 的系统清理命令。-a(或--all):不仅清理“悬空”镜像(即无标签的<none>镜像),还会清理所有未被任何容器使用的镜像。--volumes:清理未被挂载的数据卷(非常重要,因为默认的prune不会清理数据卷,而数据卷往往占用最多磁盘空间)。-f(或--force):强制执行,跳过确认提示(如果不加-f,Docker 会询问你y/n以确认是否删除)。
⚠️ 警告与注意事项(运行前必看)
这个命令非常彻底,它会删除以下所有内容:
- 所有已停止的容器(如果你有暂时停止但以后还要启动的容器,请先启动它,否则会被删掉)。
- 所有未被任何容器使用的网络。
- 所有未被任何容器挂载的数据卷(注意: 如果你的数据库数据存在未运行容器的卷里,这会导致数据永久丢失!)。
- 所有未使用的镜像(即使是你刚刚
docker pull下来但还没来得及运行的镜像)。
🛡️ 更安全的温和清理方案
如果你担心误删重要的数据卷或镜像,可以使用以下更温和的方案:
方案 A:保留未使用的镜像和数据卷(仅清理已停止的容器和网络)
bash
docker system prune -f
方案 B:清理容器、网络和镜像,但保留数据卷(最推荐,防止数据丢失)
bash
docker system prune -a -f