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
절름발이 의 결과물 입니까?
NB : 컨테이너는로 실행됩니다 "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
보고서 는 무엇입니까 ? 똑같다?