在docker容器中运行python脚本,一切似乎运行顺利,看到一些STDOUT消息,大约5分钟我收到Killed
消息,没有进一步解释,过程停止。查询数据库可能是磁盘空间问题,可能是OOM问题。我不确定,但我不知道在哪里可以找到关于这个kill消息的日志,所以我可以找到这个问题的根源。这些日志有哪些想法?
在Mac OSX上运行docker-machine。
真的是所有信息都说出来了!
root@c7b800e0f276:/opt/mymodule# python
Python 2.7.13 (default, May 1 2017, 22:44:36)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from mymodule import model
>>> model.run('2017-04-01')
INFO:Deleting from input table.
INFO:Inserting into input table.
INFO:Querying input table for chunk.
Killed
root@c7b800e0f276:/opt/mymodule# exit
谢谢!
答案 0 :(得分:15)
默认情况下,Docker for Mac会将可用资源限制为 2GB !这对我运行的应用来说太低了。我正在尝试的解决方案是将内存限制提高到8GB。
(我有类似的问题,虽然使用JVM应用程序,而不是Python,并通过Google搜索到达此处。从@sergiu删除的答案我能够找出问题。)
Get started with Docker for Mac说:
高级设置包括:
CPU :默认情况下,Docker for Mac设置为使用主机上可用处理器数量的一半。要提高处理能力,请将其设置为更高的数字;减少,减少数量。
内存:默认情况下,Docker for Mac设置为使用
2
GB运行时内存,从Mac上的总可用内存中分配。要增加RAM,请将其设置为更高的数字;减少它,降低数量。交换:根据需要配置交换文件大小。默认值为1 GB。
答案 1 :(得分:5)
使用Docker for Mac,您可以使用以下命令进入主机VM命名空间:
docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh
然后运行chroot /host
将root更改为主机挂载。现在,您可以使用dmesg
等实用程序来检查是否有任何OOM消息(例如您的问题的评论建议)。
答案 2 :(得分:0)
发生这种情况是因为您的应用程序正在消耗所有可用的RAM。 您可以监视RAM消耗并增加它。
这对我有用