Docker rm阻止并发运行

我想在docker run johndoe/example doSomething等前台模式下运行很多docker容器。

我不想在已退出的容器上浪费磁盘空间,所以我必须删除它们。 但是大约需要9秒钟才能移除一个退出的容器,所以我应该在命令执行后移除容器。

这就是为什么我有两个并发进程:一个运行容器,另一个删除它们。 问题是, docker rm似乎阻止 – 它不会运行时删除。

这是一个最小的工作示例。 以下命令每秒运行一个docker容器,然后将当前date输出到控制台:

 while true; do docker run ubuntu ls > /dev/null; sleep 1; date; done 

输出如下所示:

 星期二9月30日14:25:18 MSK 2014
星期二9月30日14:25:20 MSK 2014
星期二9月30日14:25:22 MSK 2014
星期二9月30日14:25:24 MSK 2014 

但是当我在一个单独的控制台中运行docker rm some_id时,我发现时间跨度增加如下:

 星期二9月30日14:26:53 MSK 2014
星期二9月30日14:26:55 MSK 2014
星期二9月30日14:27:03 MSK 2014
星期二9月30日14:27:10 MSK 2014 

我错了吗? 为什么这样? 我该如何处理呢?

您是否尝试过在一个rm命令中删除多个容器? 这可能会减less打嗝的数量。 也许你可以每天做一次,而对你来说打嗝不是很重要?

另外,您是否测量了占用多less磁盘空间?由于覆盖文件系统的性质,可能很长时间无关紧要。 当然,这取决于你做什么事情…

就像在docker-user邮件列表中一样 – 你可以把你的输出post发过来

docker version ; docker info

因为这可能是存储驱动程序和特定设置

(虽然也许你只是有这么多的容器或图像,你的系统将需要时间来处理它们。