Armadilloフォーラム

コンテナに対するメッセージキューサイズ設定について

h-yuusuke

2022年4月28日 10時15分

お世話になっております。

掲題の件に関してまして、コンテナ内で使用するメッセージキューのサイズを設定しようとしております。
そのため、下記の手順を実施しているのですが、設定したいサイズになりません。
①下記2行を追加した"limits.conf"を用意

*                hard    msgqueue        8192000
*                soft    msgqueue        8192000

②Dockerfileに下記を記載してpodman buildを実行

COPY limits.conf /etc/security/limits.conf

③コンテナ起動後、コンテナ内で「ulimit -q」コマンドを実行してメッセージキューサイズを確認

# ulimit -q
819200  // ①でlimits.confに記載した8192000になっていない

コンテナ内でのメッセージキューサイズを設定するためにはどのようにしたらよいでしょか?

コメント

at_dominique.m…

2022年4月28日 10時44分

h-yuusukeさん、

お世話になっています、
マルティネです。

> ①下記2行を追加した"limits.conf"を用意
> コンテナ内でのメッセージキューサイズを設定するためにはどのようにしたらよいでしょか?

そうですね。 limits.conf は pam によって制限を実施しますが、コンテナ内の pam をあまり使いません(コンテナ内で su など使っていたら、使いことになりますが、CAP_SYS_ADMINがなければ下がることしかできません)

代わりに、podman_startが実行される時にその制限が無いので、 .confファイルに単純に `ulimit -q 8192000` を実行すれば上げることはできます。

なお、podman_start の conf は個別に子プロセスで実行されますので、複数のコンテナを起動する場合に他のコンテナに影響ありません。

# ちなみに、podman execを使用する場合に、podman exec を実行する環境が依存されるので、exec前にも ulimit -qを使えます。

# cat /etc/atmark/containers/test.conf 
set_image localhost/at-debian-image
set_command bash -c 'ulimit -q'
ulimit -q 8192000
# podman_start test
Starting 'test'
12b07e03b40af53124b95371768590ba78840e15546d18088610deeb39af5f2e
# podman logs test
8192000
# sed -i -e 's/set_command.*/set command sleep infinity/' /etc/atmark/containers/test.conf
# podman_start test
Starting 'test'
12b07e03b40af53124b95371768590ba78840e15546d18088610deeb39af5f2e
539e54e82b6fb7abfb72d150d20f22b4bcd7d01ef57f2328bac1baf5464cb349
# podman exec -ti test bash -c 'ulimit -q'
819200
# ( ulimit -q 8192000; podman exec -ti test bash -c 'ulimit -q'; )
8192000

よろしくお願いします