我有一个循环上的pyhton脚本
然后继续循环,直到AWS SQS队列为空。
脚本很棒!我跑了几个月。硬盘空间各不相同,但从未达到5%左右,具体取决于视频的大小。
我决定将这个脚本放在一个docker容器中并运行docker-compose,这样我就可以一次运行一堆这样的脚本。
问题是硬盘充满了!我知道用5运行磁盘上的空间会被雇用,但是当我完成处理文件后会被删除。
但是对于docker,似乎是一个缓存或什么的。我执行到每个容器,他们运行正常。删除旧文件和所有文件。
不知道docker容器和作为服务运行之间的区别会对HD造成影响。
任何方向都会很棒。
添加到此。当我" rm" Docker容器硬盘驱动器空间释放。我运行一个docker ps -s并且容器上的空间并不疯狂。就像你和他妈的#34;在docker容器中的一个文件,它永远不会真正发送它。
答案 0 :(得分:5)
如果您将图像下载到未从主机映射的目录中,则在卸载容器之前,docker容器不会释放已用过的磁盘空间 - 容器中完成的任何操作都是短暂的,但是HOST我不知道容器内部的状态。
从这个意义上说,它很像一个虚拟机映像,由一个根据需要增长的文件支持,但从不收缩。 Docker有一个运行容器跟踪更改的目录。在主机上,您可以在/var/lib/docker/containers/<id>
如果您需要容器共享磁盘空间,我建议您将主机中的共享卷映射到要共享的每个docker容器映像中。
尝试以下
docker run -ti -v /host/dir:/container/dir ubuntu bash
以上将在终端交互模式下运行ubuntu映像,并将主机的目录/host/dir
挂载到正在运行的容器中。容器写入/container/dir
的任何内容都将显示在主机/host/dir
中,安装它的任何其他容器也会看到更改。
请记住,挂载它的所有容器都会看到共享卷中所做的任何事情,所以在添加和删除文件/目录时要小心!
答案 1 :(得分:1)
我建议您使用卷,并将这些卷装入容器中。卷的更改是即时的,而不是对容器文件系统所做的更改(在删除容器之前不会真正删除)。