ฉันค่อนข้างงุนงงว่าภายในคอนเทนเนอร์ 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"
นั่นคือเลเยอร์การดำเนินการของ Docker ไม่ใช่ LXC
[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
รายงาน? เหมือน?