2016-05-11 9 views
8

Mam kontener dokera działający na RHEL 7 z Dockerem 1.7.0. Program, który działa w tym kontenerze nasłuchuje połączeń TCP na porcie 5000. w moim Dockerfile kładę zdanie EXPOSE 5000 i biegnę pojemnik z następującego polecenia:Podczas korzystania z Docker, połączenia ESTABLISHED nie pojawiają się w netstat

docker run \ 
--name myProgram \ 
--detach \ 
--publish 5000:5000 \ 
--volume /home/docker/apps/myProgram/logs:/var/log/myProgram/ \ 
--volume /home/docker/apps/myProgram/conf:/usr/local/snnotificationreceiver/conf/ \ 
--restart always \ 
10.167.152.15:5000/myProgram:1.0.0 

Kiedy wykonać netstat na gospodarza I zobacz gniazdo LISTEN:

[[email protected] bin]# netstat -naop | grep 5000 
tcp6  0  0 :::5000     :::*     LISTEN  33595/docker-proxy off (0.00/0/0) 

mogę połączyć się z aplikacją poprzez podłączenie do adresu iP hosta na porcie 5000 i wysyłam dane do aplikacji przybywa. Wiem o tym, ponieważ widzę to na moich logach aplikacji, aplikacja wysyła również dane przez gniazdo. Jednak nie widzę żadnych ustanowionych połączeń za pomocą netstat na hoście Döcker:

[[email protected] bin]# netstat -naop | grep ESTABLISHED 

widzę ustalonego połączenia po stronie klienta, który nie korzysta z docker:

[[email protected] ~]# netstat -naop | grep 5000 
tcp  0  0 10.167.43.73:39218  10.167.152.138:5000  ESTABLISHED 21429/telnet   off (0.00/0/0) 

ja nie znajdź dowolny ekwiwalent polecenia dokowania lub podobny do netstat Czy to normalne? Jak wyświetlić połączenia ESTABLISHED do kontenera lub do proxy-dokowania?

Dzięki

Odpowiedz

9

Można też zrobić:

docker exec <containerid> netstat -tan | grep ESTABLISHED 

lub jeśli nie masz netstat w Döcker obrazka:

docker inspect -f '{{.State.Pid}}' <containerid> # note the PID 
sudo nsenter -t <pid> -n netstat | grep ESTABLISHED 

nsenter jest częścią pakietu util-linux. (plagiarized @larsks)

+0

Właściwie to działa, ale polecenie powinno wyglądać jak 'sudo nsenter -t -n netstat | grep ESTABLISHED'. Zwróć uwagę na opcję '-n'. Więcej informacji można znaleźć tutaj http://stackoverflow.com/a/40352004/1201488. –

+0

Tak, przepraszam za to. -n jest wymagane, aby nsenter działał tutaj. – AdvilUser

+0

Dla mnie to pokazuje połączenia jako pochodzące z localhost, nie ma pojęcia o źródłowym adresie połączenia. Ktoś wie, jak to zobaczyć? – jjmontes

Powiązane problemy