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