Docker rm阻止并发运行

时间:2014-09-30 10:31:33

标签: docker

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

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

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

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

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

输出如下:

Tue Sep 30 14:25:18 MSK 2014
Tue Sep 30 14:25:20 MSK 2014
Tue Sep 30 14:25:22 MSK 2014
Tue Sep 30 14:25:24 MSK 2014

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

Tue Sep 30 14:26:53 MSK 2014
Tue Sep 30 14:26:55 MSK 2014
Tue Sep 30 14:27:03 MSK 2014
Tue Sep 30 14:27:10 MSK 2014

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

2 个答案:

答案 0 :(得分:0)

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

此外,您是否已经测量了消耗了多少磁盘空间,由于覆盖文件系统的性质,它可能在很长一段时间内无关紧要。当然这取决于你的doSomething实际做了什么...

答案 1 :(得分:0)

在docker-user邮件列表中,您可以发布

的输出

docker version ; docker info

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

(尽管您可能只有很多容器或图像,系统需要时间来处理它们。