python - Docker容器不断增长

标签 python amazon-web-services docker docker-compose

我有一个循环的 python 脚本

  1. 将视频 block 从 AWS S3 下载到/filename。
  2. 按顺序排列文件并将它们连接起来。
  3. 将整个处理后的视频文件上传到 AWS S3。
  4. 删除文件夹/文件名。

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

脚本很棒!我已经运行了几个月。硬盘空间会有所不同,但不会达到 5% 左右,具体取决于视频的大小。

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

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

但是有了docker,好像就是缓存什么的。我执行每个容器,它们运行良好。删除旧文件和所有文件。

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

除此之外,当我“rm”docker 容器时,硬盘空间就会释放出来。我运行“docker ps -s”,容器上的空间并不大。就像当你在 docker 容器中“rm”一个文件时,它从来没有真正“rm”它。

最佳答案

如果您将图像下载到不是从主机映射的卷目录,则 docker 容器将不会释放已使用的磁盘空间,直到容器被删除——容器中所做的任何事情都是短暂的,但主机不会不知道容器内部发生的事情的状态。

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

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

尝试以下操作

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

以上将以终端交互模式运行 ubuntu 镜像并挂载主机目录 /host/dir在运行的容器内。容器写入 /container/dir 的任何内容将出现在主机/host/dir以及安装它的任何其他容器也会看到更改。

只要记住在共享卷中所做的任何事情都会被安装它的所有容器看到,所以在从它添加和删除文件/目录时要小心!

关于python - Docker容器不断增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36969395/

相关文章:

python - 在 Elastic Beanstalk (AWS) 中守护 Celerybeat

java - 在 Beanstalk 中使用上下文路径部署 war 的可接受方式

docker - 什么是容器即服务

java - Windows 上的 Docker 引擎会忽略 Spring Boot Web 应用程序的 server.port 属性

ruby-on-rails - 为什么 Elastic Beanstalk 在部署时删除应用程序日志

ubuntu - docker 。从主机发送邮件

python - TelegramBot,如何处理命令旁边的消息

PYTHON:交替读取 2 个文件中的行并 append 到第三个文件

python - 如何使用 Python 包装器安装 GDCM?

Python pythonw 子进程 check_output 不起作用