gdbを使用してプロセスに接続するとき。見せる
プロセスに接続できません。ユーザーのuidがターゲットプロセスのuidと一致する場合は、/proc/sys/kernel/yama/ptrace_scope設定を確認するか、rootとして再試行してください。詳細については、/etc/sysctl.d/10-ptrace.confを参照してください。
ptrace: 操作は許可されません。
ルートとしてecho 0 >/proc/sys/kernel/yama/ptrace_scope
;を使用すると、次のように表示されます。
bash: /proc/sys/kernel/yama/ptrace_scope: 読み取り専用ファイルシステム
この問題をどのように解決できますか?内容/etc/sysctl.d/10-ptrace.conf
はkernel.yama.ptrace_scope = 0
答え1
これで、dockerでこのオプションを使用できるようになります--privileged
。https://docs.docker.com/engine/reference/commandline/exec/
docker exec --privileged -ti <container> bash
特権モードでは、ptrace_scopeを変更しなくてもgdbを実行できます。
答え2
より細かいアプローチを使用するにはcap_add
。私に役立つフラグはですSYS_PTRACE
。これはCLIファイルとdocker-composeファイルの両方で機能します。スワームの場合、Docker 20.10.0以降が必要です。