Estou um pouco confuso que dentro de um contêiner do Docker lsof -i
não produz nenhuma saída.
Exemplo (todos os comandos / saída de dentro do contêiner):
[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 -
Observe também como nenhum nome de programa ou PID é exibido por netstat
. fuser
também fornece resultados um tanto confusos e também não consegue identificar os PIDs.
Alguém pode lançar alguma luz sobre isso?
- Como posso substituir
lsof -i
(para ver também o nome do processo !) - Por que a produção de
netstat
aleijados também?
NB: As pistas recipiente com "ExecDriver": "native-0.1"
, que é a camada de execução próprio Docker, não 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:
(Eu não sou obcecado pelo Permission denied
, porque esses números. O que me confunde é a lista vazia de PIDs depois 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)
Há mais saída para o usuário conectado, que também é identificado corretamente, mas é isso. Aparentemente, é impossível discernir de que tipo ( lsof -i
limites para soquetes da Internet) é um determinado "objeto".
sshd
linhas (também relacionadas), algumas das quais podem ser soquetes TCP, como TYPE
unknown
. Peculiar. Anexando a saída à minha pergunta.
strace -s 2000 -o lsof.log lsof -i
, provavelmente fornecerá algumas informações adicionais sobre o que está sendo bloqueado.
strace
ele próprio esteja limitado no contêiner. Emocionantes coisas novas para aprender. Obrigado por devolver a ideia. Deve bater na cama, no entanto.
lsof
relatório? O mesmo?