如何使用 --ulimit 选项在 docker 容器中将 POSIX 消息队列限制设置为无限制

问题描述 投票:0回答:3

如何将 docker 容器的 POSIX 消息队列限制设置为无限制

我知道 --ulimit 是一个可以与 docker run 一起使用的选项,但我不太确定如何将 --ulimit 选项与 docker run 一起用于 POSIX 消息队列。

尝试了以下但没有成功:

docker run -it --ulimit msgqueue=unlimited

还尝试在容器内进行以下操作

ulimit -q unlimited

错误:不允许操作

docker posix ulimit
3个回答
3
投票

您可以将 POSIX 消息队列大小设置为无限制,如下所示:

docker run --ulimit msgqueue=-1
。在 Docker 版本上测试了它
20.10.5

在容器内,您可以通过运行

ulimit -a
来确认它确实是无限的:

root@3385ae319f68:/# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15217
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 50000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) unlimited   # <----------
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

在我的例子中,如果我不设置

--ulimit msgqueue=-1
选项,则该值为 819200。


2
投票

知道docker中的--ulimit不支持unlimited值
做法是

docker run -it --ulimit msgqueue=100000000:100000000

100000000 代表 100GB


0
投票

我将它与其他参数一起使用:

docker run    -u "$(id -u)":"$(id -g)" \
          --sysctl fs.mqueue.queues_max=1024 \
          --sysctl fs.mqueue.msg_max=512 \
          --ulimit msgqueue=-1  \
....

如果我打开第二个根窗口(docker exec -it -u 0 bash)并将其设置在那里(ulimit -q unlimited),它只能在这个窗口中工作,这没有用......

© www.soinside.com 2019 - 2024. All rights reserved.