やりたいこと
Docker コンテナ (Ubuntu 22.04)
EC2 (Ubuntu 22.04)
以上の構成において、Dockerコンテナ内の sysctl の値として kernel.perf_event_paranoid=-1
を設定したい。
色々試した方法を結果をメモる。
前提知識
カーネルパラメータはホストマシンとDockerコンテナで共通の設定になっている。(ref)
方法
⭕️ EC2ホスト上で /etc/sysctl.conf
を書き換え、rebootする
sudo /bin/su -c "echo 'kernel.perf_event_paranoid = -1' >> /etc/sysctl.conf"
sudo reboot # sudoをつけないと失敗した
reboot後、EC2内およびコンテナ内で更新されたことを確認
sysctl -a | grep perf_event_paranoid
#> kernel.perf_event_paranoid = -1 # 成功
⭕️ EC2ホスト上で /etc/sysctl.conf
を書き換え、ホスト上で sysctl -p
する。
sudo /bin/su -c "echo 'kernel.perf_event_paranoid = -1' >> /etc/sysctl.conf"
sudo sysctl -p # sudoをつけないと失敗した
# 確認
sysctl -a | grep perf_event_paranoid
#> kernel.perf_event_paranoid = -1 # 成功
なお、sudoをつけないと失敗した。
❌ Dockerコンテナのrun時の引数に --sysctl=kernel.perf_event_paranoid=-1
を指定する
sudo docker run -it --privileged --sysctl=kernel.perf_event_paranoid=-1 <image> /bin/bash
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Error: sysctl 'kernel.perf_event_paranoid' is not allowed # 失敗
❓ Dockerコンテナ内で、/etc/sysctl.conf
を書き換え、rebootする
試してない
⭕️ Dockerコンテナ内で /etc/sysctl.conf
を書き換え、sysctl -p
する。
# sudoをつけないと失敗した
sudo docker run -it --privileged --sysctl=kernel.perf_event_paranoid=-1 <image> /bin/bash
# コンテナ内で
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
echo 'kernel.perf_event_paranoid = -1' >> /etc/sysctl.conf
sysctl -p # sudoをつけなくても成功した