docker集装箱不断增长

我有一个循环pyhton脚本

  1. 将video块从AWS S3下载到/文件名
  2. 按顺序对文件进行sorting并连接它们。
  3. 将整个处理后的videofile upload到AWS S3
  4. 删除文件夹/文件名

然后继续循环,直到AWS SQS队列为空。

脚本很好用! 我已经运行了好几个月。 硬盘空间有所不同,但从来没有得到大约5%,这取决于video的大小。

我决定把这个脚本放在docker容器中,运行docker-compose,这样我就可以一次运行一堆脚本。

问题是硬盘驱动器填满了! 我知道用5运行磁盘上的空间将被雇佣,但是当我完成处理文件的时候得到删除。

但与docker,似乎是一个caching或什么的。 我进入每个容器,他们运行良好。 删除旧文件和所有。

不知道docker集装箱和作为服务运行之间的区别是否会对高清产生影响。

任何方向都会很棒。

添加到此。 当我“docker”docker集装箱硬盘空间释放。 我运行一个docker ps -s,容器上的空间并不疯狂。 就好像当你在docker容器里面写一个“rm”文件时,它永远不会是真的。

如果您将映像下载到从主机未被映射的目录中,那么在容器被移除之前,docker容器将不会释放已使用的磁盘空间 – 在容器中完成的任何操作都是短暂的,但是HOST不知道容器内部正在发生的状态。

在这个意义上,它就像一个虚拟机镜像,由一个只根据需要增长的文件支持,但永远不会缩小。 Docker有一个运行容器跟踪更改的目录。 在主机上,您可以在/var/lib/docker/containers/<id>find支持运行容器的文件

如果你需要你的容器来共享磁盘空间,我build议你将一个共享卷从主机映射到每个docker容器中的图像共享。

尝试以下

  docker run -ti -v /host/dir:/container/dir ubuntu bash 

上面的代码将以terminal交互模式运行ubuntu镜像,并在运行的容器中挂载主机的目录/host/dir 。 容器写入/container/dir任何内容都将显示在hosts /host/dir而安装它的任何其他容器也会看到更改。

只要记住所有在共享卷上完成的任何容器都可以看到,所以在添加和删除文件/目录时要小心!

我build议你使用卷,并将这些卷装入容器中。 卷的变化是即时的,而不是对容器文件系统所做的更改(直到删除容器才删除)。

看看这里的文档