Sono un po 'sconcertato dal fatto che all'interno di un contenitore Docker lsof -i
non produca alcun output.
Esempio (tutti i comandi / output dall'interno del contenitore):
[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 -
Nota anche come nessun PID o nome del programma è mostrato da netstat
. fuser
inoltre fornisce un output un po 'confuso e non è in grado di individuare anche i PID.
Qualcuno può far luce su questo?
- Come posso sostituire
lsof -i
(per vedere anche il nome del processo !) - Perché anche l'output di
netstat
paralizzato?
NB: Il contenitore funziona con "ExecDriver": "native-0.1"
, ovvero il livello di esecuzione proprio di Docker, non 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:
(Non sono ossessionato dal Permission denied
, perché quella cifra. Ciò che mi confonde è la lista vuota di PID dopo 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)
C'è dell'output in più per l'utente connesso, anch'esso correttamente identificato, ma questo è tutto. È apparentemente impossibile discernere di quale tipo ( lsof -i
limiti alle prese Internet) è un certo "oggetto".
sshd
linee (anche correlate), alcune delle quali potrebbero essere socket TCP, come TYPE
unknown
. Peculiar. Aggiungendo l'output alla mia domanda.
strace -s 2000 -o lsof.log lsof -i
, probabilmente ti darà alcune informazioni aggiuntive su ciò che viene bloccato.
strace
stesso sia limitato nel contenitore. Nuove cose interessanti da imparare. Grazie per l'idea di rimbalzo. Devo andare a letto, però.
lsof
rapporto? Lo stesso?