如何删除旧的 Docker 容器

新手上路,请多包涵

这个问题与 我是否应该关注多余的、非运行的 Docker 容器有关? .

我想知道如何删除旧容器。 docker rm 3e552code34a 可以让你删除一个,但我已经有很多了。 docker rm --help 不提供选择选项(如全部或按图像名称)。

也许有一个存储这些容器的目录,我可以轻松地手动删除它们?

原文由 qkrijger 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 509
2 个回答

Docker 1.13.x 开始,您可以使用 Docker container prune

 docker container prune

这将删除所有停止的容器,并且应该以相同的方式在所有平台上工作。

还有一个 Docker 系统 prune

 docker system prune

这将在一个命令中清理所有未使用的容器、网络、图像(悬空和未引用)以及可选的卷。


对于较旧的 Docker 版本,您可以将 Docker 命令与其他 Unix 命令串在一起以获得您需要的内容。以下是有关如何清理已使用数周的旧容器的示例:

 $ docker ps --filter "status=exited" | grep 'weeks ago' | awk '{print $1}' | xargs --no-run-if-empty docker rm

值得称赞的是,这个例子来自 https://twitter.com/jpetazzo/status/347431091415703552

原文由 Ken Cochrane 发布,翻译遵循 CC BY-SA 4.0 许可协议

我从 Guillaume J. Charmes 那里得到的另一种方法(应得的信用):

 docker rm `docker ps --no-trunc -aq`

将以优雅的方式删除所有容器。

Bartosz Bilicki 为 Windows 提供:

 FOR /f "tokens=*" %i IN ('docker ps -a -q') DO docker rm %i

对于 PowerShell:

 docker rm @(docker ps -aq)


Docker 1.13(2016 年第四季度)的更新,归功于 VonC本线程稍后):

docker system prune 将删除所有未使用的数据(即,按顺序:容器停止,没有容器的卷和没有容器的图像)。

请参阅 PR 26108 和 提交 86de7c0 ,其中引入了一些新命令,以帮助可视化 Docker 守护程序数据在磁盘上占用的空间量,并允许轻松清理“不需要”的多余空间。

 docker system prune

WARNING! This will remove:
    - all stopped containers
    - all volumes not used by at least one container
    - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y

原文由 qkrijger 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题