基于本文回答

播面 播面

文解图解播客视频,多维讲透八股文
0
评论

如何一键清理所有已停止的容器、未使用的镜像、网络和未挂载的数据卷?

在 Docker 中,你可以使用一个非常强大的内置命令来一键清理所有未使用的资源(包括已停止的容器、未使用的镜像、未挂载的数据卷和未使用网络)。

🚀 最强一键清理命令

在终端中运行以下命令:

bash
docker system prune -a --volumes -f

📝 参数详细解释:

  • docker system prune:Docker 的系统清理命令。
  • -a (或 --all):不仅清理“悬空”镜像(即无标签的 <none> 镜像),还会清理所有未被任何容器使用的镜像
  • --volumes:清理未被挂载的数据卷(非常重要,因为默认的 prune 不会清理数据卷,而数据卷往往占用最多磁盘空间)。
  • -f (或 --force):强制执行,跳过确认提示(如果不加 -f,Docker 会询问你 y/n 以确认是否删除)。

⚠️ 警告与注意事项(运行前必看)

这个命令非常彻底,它会删除以下所有内容

  1. 所有已停止的容器(如果你有暂时停止但以后还要启动的容器,请先启动它,否则会被删掉)。
  2. 所有未被任何容器使用的网络
  3. 所有未被任何容器挂载的数据卷注意: 如果你的数据库数据存在未运行容器的卷里,这会导致数据永久丢失!)。
  4. 所有未使用的镜像(即使是你刚刚 docker pull 下来但还没来得及运行的镜像)。

🛡️ 更安全的温和清理方案

如果你担心误删重要的数据卷或镜像,可以使用以下更温和的方案:

方案 A:保留未使用的镜像和数据卷(仅清理已停止的容器和网络)

bash
docker system prune -f

方案 B:清理容器、网络和镜像,但保留数据卷(最推荐,防止数据丢失)

bash
docker system prune -a -f