Dockerコンテナー内でlsof -i
は出力が得られないことに多少困惑しています。
例(コンテナ内からのすべてのコマンド/出力):
[1] root@ec016481cf5f:/# lsof -i
[1] root@ec016481cf5f:/# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
また、PIDまたはプログラム名がによって表示されないことに注意してくださいnetstat
。fuser
また、やや紛らわしい出力が得られ、PIDを特定することもできません。
誰もこれに何か光を当てることができますか?
- どうすれば置換できますか
lsof -i
(プロセス名も表示されます!) - なぜ出力も
netstat
不自由になるのですか?
注:コンテナーはで"ExecDriver": "native-0.1"
実行されます。これはLXCではなく、Docker独自の実行レイヤーです。
[1] root@ec016481cf5f:/# fuser -a4n tcp 22
Cannot stat file /proc/1/fd/0: Permission denied
Cannot stat file /proc/1/fd/1: Permission denied
Cannot stat file /proc/1/fd/2: Permission denied
Cannot stat file /proc/1/fd/3: Permission denied
Cannot stat file /proc/1/fd/255: Permission denied
Cannot stat file /proc/6377/fd/0: Permission denied
Cannot stat file /proc/6377/fd/1: Permission denied
Cannot stat file /proc/6377/fd/2: Permission denied
Cannot stat file /proc/6377/fd/3: Permission denied
Cannot stat file /proc/6377/fd/4: Permission denied
22/tcp:
(私はPermission denied
、その数字に夢中です。私を混乱させるのは、の後のPIDの空のリストです22/tcp
。)
# lsof|awk '$1 ~ /^sshd/ && $3 ~ /root/ {print}'
sshd 6377 root cwd unknown /proc/6377/cwd (readlink: Permission denied)
sshd 6377 root rtd unknown /proc/6377/root (readlink: Permission denied)
sshd 6377 root txt unknown /proc/6377/exe (readlink: Permission denied)
sshd 6377 root 0 unknown /proc/6377/fd/0 (readlink: Permission denied)
sshd 6377 root 1 unknown /proc/6377/fd/1 (readlink: Permission denied)
sshd 6377 root 2 unknown /proc/6377/fd/2 (readlink: Permission denied)
sshd 6377 root 3 unknown /proc/6377/fd/3 (readlink: Permission denied)
sshd 6377 root 4 unknown /proc/6377/fd/4 (readlink: Permission denied)
sshd 6442 root cwd unknown /proc/6442/cwd (readlink: Permission denied)
sshd 6442 root rtd unknown /proc/6442/root (readlink: Permission denied)
sshd 6442 root txt unknown /proc/6442/exe (readlink: Permission denied)
sshd 6442 root 0 unknown /proc/6442/fd/0 (readlink: Permission denied)
sshd 6442 root 1 unknown /proc/6442/fd/1 (readlink: Permission denied)
sshd 6442 root 2 unknown /proc/6442/fd/2 (readlink: Permission denied)
sshd 6442 root 3 unknown /proc/6442/fd/3 (readlink: Permission denied)
sshd 6442 root 4 unknown /proc/6442/fd/4 (readlink: Permission denied)
sshd 6442 root 5 unknown /proc/6442/fd/5 (readlink: Permission denied)
接続されたユーザーにはさらにいくつかの出力があり、これも正しく識別されますが、それだけです。lsof -i
特定の「オブジェクト」がどのタイプ(インターネットソケットの制限)であるかを見分けることは明らかに不可能です。
sshd
関連する)行のホスト全体を表示します。その一部は、TCPソケットである可能性がありますTYPE
unknown
。独特。出力を質問に追加します。
strace -s 2000 -o lsof.log lsof -i
すると、ブロックされているものに関する追加の洞察が得られる可能性があります。
strace
、コンテナ内で制限されている可能性もあります。学ぶためのエキサイティングな新しいもの。アイデアをバウンスしていただきありがとうございます。しかし、ベッドを打つ必要があります。
lsof
レポートとは何ですか?同じ?