Docker容器不断增长

joe*_*ler 4 python amazon-web-services docker docker-compose

我有一个循环上的pyhton脚本

  1. 将AWS S3中的视频块下载到/ filename
  2. 按顺序对文件进行排序并对其进行连接.
  3. 将整个处理过的视频文件上传到AWS S3
  4. 删除文件夹/文件名

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

脚本很棒!我跑了几个月.硬盘空间有所不同,但从未达到5%左右,具体取决于视频的大小.

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

问题是硬盘充满了!我知道用5运行磁盘上的空间会被雇用,但是当我完成处理文件后会被删除.

但是对于docker,似乎是一个缓存或什么的.我执行到每个容器,他们运行正常.删除旧文件和所有文件.

不知道docker容器和作为服务运行之间的区别会对HD产生什么影响.

任何方向都会很棒.

添加到此.当我"停放"码头集装箱时,硬盘空间就会释放.我运行一个docker ps -s并且容器上的空间并不疯狂.就像你在"停靠"Docker容器中的文件时一样,它从来都不是真的.

Ray*_*Ray 6

如果您将图像下载到未从主机映射的目录,则Docker容器将不会释放已用过的磁盘空间,直到容器被移除 - 容器中完成的任何操作都是短暂的,但HOST不知道容器内部的状态.

从这个意义上来说,它很像一个虚拟机映像,由一个只是根据需要增长的文件支持,但从不收缩.Docker有一个运行容器跟踪更改的目录.在主机上,您可以找到支持正在运行的容器的文件/var/lib/docker/containers/<id>

如果您需要容器共享磁盘空间,我建议您将主机中的共享卷映射到每个docker容器映像以进行共享.

请尝试以下方法

 docker run -ti -v /host/dir:/container/dir ubuntu bash
Run Code Online (Sandbox Code Playgroud)

以上将在终端交互模式下运行ubuntu映像并将主机目录挂载/host/dir到正在运行的容器中.容器写入的任何内容/container/dir都将显示在主机中,/host/dir并且安装它的任何其他容器也将看到更改.

只需记住挂载它的所有容器都可以看到共享卷中完成的任何操作,因此在添加和删除文件/目录时要小心!

  • @ user2457010,您可以挂载主机`/ tmp`目录。有趣的是,即使您“ rm”事情,容器磁盘的使用量也会增加!Docker将所有内容保留为容器映像更改的日志。来看看`/ var / lib / docker / container / &lt;id&gt; / &lt;id&gt; -json.log`文件。我尝试将容器内部文件系统尽可能地只读,并在需要时使用安装的卷。 (2认同)