GNU/Linux >> Linux の 問題 >  >> Linux

Docker 内で lsof を置き換えるにはどうすればよいですか (LXC ベースではなくネイティブ)

(注:この質問では、質問者がどのように docker コンテナーに入っているのかが不明です。私は 想定 しています docker exec -it CONTAINER bash が使用されました。)

centos:7 に基づく Docker イメージを使用すると、この問題が発生しました docker バージョン 1.9.0 を使用 これを克服するために、私はただ走りました:

docker exec --privileged -it CONTAINER bash

--privileged が含まれていることに注意してください .

これが必要な理由についての私の素朴な理解:ここに記載されているように、docker はコンテナーをより「安全」にする努力をしているようです。


はぁ、話が重くなる。誰かがより良い答えを持っている場合は、それを書いてください。受け入れられる場合は、それを受け入れます。しかし、ここに明らかな理由があります。 ホスト のログ ファイルを無視するなんて怠慢です :

Jun 12 01:29:46 hostmachine kernel: [140235.718807] audit_printk_skb: 183 callbacks suppressed
Jun 12 01:29:46 hostmachine kernel: [140235.718810] type=1400 audit(1402536586.521:477): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="trace" denied_mask="trace" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718860] type=1400 audit(1402536586.521:478): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718886] type=1400 audit(1402536586.521:479): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718899] type=1400 audit(1402536586.521:480): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718921] type=1400 audit(1402536586.521:481): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718954] type=1400 audit(1402536586.521:482): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719001] type=1400 audit(1402536586.521:483): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719043] type=1400 audit(1402536586.521:484): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719086] type=1400 audit(1402536586.521:485): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719126] type=1400 audit(1402536586.521:486): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"

したがって、apparmor が原因のようですが、ホスト/コンテナーのセキュリティを損なうことなくこれを許可する方法を理解するか、セキュリティを損なうことなくそれが可能かどうかを確認する必要があります.


もう 1 つの可能性として、今回はよりきめ細かいセキュリティ設定を使用します。docker コンテナーに SYS_PTRACE 権限を付与します。

docker run --cap-add=SYS_PTRACE ...

Linux
  1. スクリプトは実行可能であるが読み取り可能ではありませんか?

  2. Dockerコンテナ内でプログラムを実行する方法は?

  3. ファイルの存在を確認し、存在しない場合はコマンドを実行するにはどうすればよいですか?

  1. read(2) は EOF でないときにゼロを返すことができますか?

  2. PostgreSQL がインストールされているかどうかを Linux スクリプトで確認するにはどうすればよいですか?

  3. R に環境変数を読み取らせるにはどうすればよいですか?

  1. docker コンテナ内で cron ジョブを実行する方法

  2. updatedb の修正方法:entware でグループ `mlocate' が見つかりませんか?

  3. プロセスが開いているファイルを確認するにはどうすればよいですか?