【问题标题】:Delete all docker instances at once一次删除所有 docker 实例
【发布时间】:2021-02-10 09:17:52
【问题描述】:

我是码头工人和其他概念的新手。我有很多未使用的码头工人正在运行,我想删除所有这些码头工人。现在我手动杀死它。我们可以一次完成吗?

【问题讨论】:

  • 是的,你可以做到。但是你为什么用python呢?
  • 抱歉,我已经删除了。谢谢:)

标签: bash docker shell command


【解决方案1】:
  • docker rm $(docker ps -a -q)

此命令删除所有停止的容器。上面的命令 docker ps -a -q 返回所有现有的容器 ID,并将它们传递给 docker rm 命令删除它们。运行中的容器不会被删除。

或者,试试这个。

  • docker system prune -a

删除所有未使用的图像,而不仅仅是悬挂的图像。它还将删除所有构建缓存

【讨论】:

    【解决方案2】:

    正如@Emon 所说,您可以选择 docker prune。但请记住,修剪系统将删除所有停止的容器和所有未使用的图像。 既然你已经标记了 shell,我也添加了这个 shell 脚本。

    echo -e "******* Start *******"
    echo -e "\n=====> Stopping & Cleaning up UNUSED containers.."
    for i in `docker ps -a | grep -v CONTAINER | awk '{print $1}'`; do docker stop $i ; docker rm $i ; done
    
    echo -e "[CLEARED]\n"
    docker ps -a
    
    echo -e "\n=====> Removing UNUSED container images.."
    
    for i in `docker images | grep none | awk '{print $3}'`; do docker rmi $i ; done
    echo -e "[CLEARED]\n"
    docker images
    

    此脚本可以根据您的需要进行相应更改,例如如果您只想删除容器甚至图像。

    这也可以通过以下方式轻松完成

    docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

    如果你只想单独移除退出的容器,你可以使用它

    `docker rm $(docker ps -a -f status=exited -q)`
    

    【讨论】:

    • 不需要grep进入awk。 awk 可以为你做 grepping。