gpt4 book ai didi

python-3.x - 通过具有特定 ulimit 的 python API 运行 docker 容器

转载 作者:行者123 更新时间:2023-12-02 00:55:07 29 4
gpt4 key购买 nike

现在我想创建一个容器来按照这个简单的文档/教程在图像中运行虚拟命令: https://docker-py.readthedocs.io/en/stable/containers.html#container-objects

import docker
client = docker.from_env()
client.containers.run(shm_size='1g', ulimits=[docker.types.Ulimit(name='memlock', hard=-1), docker.types.Ulimit(name='stack', hard=67108864)], image='ubuntu:16.04', auto_remove=True, command='date')

结果如下:

--------------------------------------------------------------------------- ContainerError Traceback (most recent call last) in () ----> 1 client.containers.run(shm_size='1g', ulimits=[docker.types.Ulimit(name='memlock', hard=-1), docker.types.Ulimit(name='stack', hard=67108864)], image='ubuntu:16.04', auto_remove=True, command='date')

~/anaconda3/lib/python3.7/site-packages/docker/models/containers.py in run(self, image, command, stdout, stderr, remove, **kwargs) 812 if exit_status != 0: 813 raise ContainerError( --> 814 container, exit_status, command, image, out 815 ) 816

尽管下面的命令可以完美运行:

docker run --shm-size=1g  --ulimit memlock=-1  --ulimit stack=67108864 --rm -t ubuntu:16.04 "date"

我使用的选项组合有什么问题?

最佳答案

您的 python 和 shell 命令不相同:在 shell 命令中,您指定了 soft 限制,而在 python 中,您指定了 hard 限制。 --ulimit command flag 参数的语法是:

<type>=<soft limit>[:<hard limit>]

文档解释了:

Note: If you do not provide a hard limit, the soft limit will be used for both values. If no ulimits are set, they will be inherited from the default ulimits set on the daemon.

为了获得相同的行为,我会尝试将您的 python ulimit 声明更改为

docker.types.Ulimit(name='stack', soft=67108864, hard=67108864)]

这听起来像是 python documentation 的缺点,它只是说 softhard 都是可选参数。

关于python-3.x - 通过具有特定 ulimit 的 python API 运行 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54884874/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com