2016-05-11 16 views
8

Tôi có vùng chứa docker chạy trên RHEL 7 với Docker 1.7.0. Các chương trình đang chạy trong thùng chứa này nghe cho các kết nối TCP trên cổng 5000. Trong Dockerfile của tôi, tôi đặt câu vạch trần 5000 và tôi chạy container với lệnh sau đây:Khi sử dụng Docker, các kết nối được thiết lập không xuất hiện trong 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 

Khi tôi thực hiện netstat trên host tôi xem LISTEN socket:

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

Tôi có thể kết nối với ứng dụng bằng cách kết nối với địa chỉ ip máy chủ trên cổng 5000 và dữ liệu tôi gửi đến đơn đăng ký. Tôi biết điều này bởi vì tôi thấy nó trên nhật ký ứng dụng của mình, ứng dụng cũng gửi dữ liệu qua ổ cắm. Tuy nhiên tôi không thấy bất kỳ kết nối ESTABLISHED sử dụng netstat trên host Docker:

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

tôi nhìn thấy kết nối ESTABLISHED về phía khách hàng mà không sử dụng 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) 

tôi không tìm thấy bất kỳ lệnh docker nào tương đương hoặc tương tự với netstat Điều này có bình thường không? Làm thế nào tôi có thể thấy các kết nối được thiết lập cho một thùng chứa hoặc đến trình cắm-proxy?

Cảm ơn

Trả lời

9

Bạn có thể có thể làm:

docker exec <containerid> netstat -tan | grep ESTABLISHED 

hoặc nếu bạn không có netstat trong hình ảnh Docker của bạn:

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

nsenter là một phần của gói util-linux. (viết tắt @larsks)

+0

Thực ra đó là giải pháp làm việc, nhưng lệnh sẽ có dạng 'sudo nsenter -t -n netstat | grep ESTABLISHED'. Chú ý đến tùy chọn '-n'. Bạn có thể tìm thêm thông tin tại đây http://stackoverflow.com/a/40352004/1201488. –

+0

Xin lỗi về điều đó. -n là cần thiết để nsenter làm việc ở đây. – AdvilUser

+0

Với tôi điều này cho thấy các kết nối đến từ máy chủ cục bộ, không có manh mối về địa chỉ nguồn của kết nối. Có ai biết cách nhìn thấy không? – jjmontes

Các vấn đề liên quan