我想在前台模式下运行很多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
我出错了吗?为什么会这样?我该如何处理?
答案 0 :(得分:0)
您是否尝试在一个rm命令中删除多个容器?这可以减少打嗝的次数。也许你可以每天做一次,而打嗝对你来说并不重要?
此外,您是否已经测量了消耗了多少磁盘空间,由于覆盖文件系统的性质,它可能在很长一段时间内无关紧要。当然这取决于你的doSomething实际做了什么...
答案 1 :(得分:0)
在docker-user邮件列表中,您可以发布
的输出 docker version ; docker info
因为这可能是存储驱动程序和特定于设置的
(尽管您可能只有很多容器或图像,系统需要时间来处理它们。