created: 2018-10-24T14:36:47.000Z

dockerコンテナ内でstraceを使う

docker runに起動オブションをつけないとstraceは実行できない これはセキュリティの見地からdocker内では呼んで良いシステムコールが制限されているため

以下のページで起動オプションについてのメモが記載されている

cap-add

SYS_PTRACE を使って良い状態にするにはこちらを指定する

If you are using secconf, there are a couple of things you can pass to docker run to loosen up this security policy. To allow strace specifically, you enable the system call that it relies upon to get its information (ptrace):

--cap-add SYS_PTRACE

security-opt

ほかにもシステムコールを制御する仕組みがあるようだ オルタナティブとして以下のようなオブションの渡し方があるようだ

This whole paradigm is in fact documented but none of my original searches turned up these pages. In addition to disabling ptrace, there are a slew of other system level commands that you may (or may not) need that aren’t on the docker whitelist of allowed system calls. The list of calls can be adjusted very granularly by feeding docker a json file defining your security options. Or if you are feeling up for it, you can re-enable all of them in one fell swoop with this option to docker run:

--security-opt seccomp:unconfined

このオプションをつけなくても動くかどうかは確認しておいた方がよさそう