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

How to set POSIX message queues limit to unlimited in docker container using --ulimit option

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

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

尝试了以下但没有成功:
docker run -it --ulimit msgqueue=unlimited

也尝试在容器内关注
ulimit -q unlimited

错误: 不允许操作

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

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

100000000 为 100GB

您可以像这样将 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。