使用Docker时,已建立的连接不会出现在netstat中
我有一个在Docker 1.7.0上的RHEL
7上运行的Docker容器。在此容器中运行的程序侦听端口5000上的TCP连接。在我的Dockerfile中,输入句子EXPOSE
5000,然后使用以下命令运行容器:
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
当我在主机上执行netstat时,我看到LISTEN套接字:
[root@server bin]# netstat -naop | grep 5000
tcp6 0 0 :::5000 :::* LISTEN 33595/docker-proxy off (0.00/0/0)
我可以通过连接端口5000上的主机IP地址来连接到应用程序,然后我发送到应用程序的数据就会到达。我知道这一点是因为我在应用程序日志中看到了它,该应用程序还通过套接字发送数据。但是我在docker主机上看不到使用netstat建立的任何连接:
[root@server bin]# netstat -naop | grep ESTABLISHED
我在不使用docker的客户端上看到ESTABLISHED连接:
[root@client ~]# 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)
我没有找到与netstat等效或相似的任何docker命令,这正常吗?如何查看到容器或docker-proxy的已建立连接?
谢谢
-
您可以执行以下操作:
docker exec <containerid> netstat -tan | grep ESTABLISHED
或者如果您的docker映像中没有netstat:
docker inspect -f '{{.State.Pid}}' <containerid> # note the PID sudo nsenter -t <pid> -n netstat | grep ESTABLISHED
nsenter是util-linux软件包的一部分。(pla窃@larsks)
-
下列哪种偏倚只可能出现在队列研究中,而不会出现在病例对照研究中( )
2021-04-20 关注 0 浏览65 1答案
-
聚合可能不会出现在UPDATE语句的设置列表中
2021-05-10 关注 0 浏览162 1答案
-
以下哪个函数不会出现在录制脚本里
2022-05-07 关注 0 浏览23 1答案
-
不会出现在乳汁中的华法林机制是( )
2021-04-19 关注 0 浏览88 1答案
-
以下( )字段内容不会出现在TCP报文头部的字段中。
2022-05-22 关注 0 浏览21 1答案
-
下列哪些信息不会出现在PDP关联的追踪里面()
2022-05-09 关注 0 浏览20 1答案
-
以下报文内容不会出现在TCP握手阶段的是?
2022-03-03 关注 0 浏览17 1答案
-
只有满足连接条件的记录才会出现在查询结果中,这种连接为:
2022-03-03 关注 0 浏览20 1答案
-
以下( )字段内容不会出现在TCP报文头部的字段中。
2022-05-09 关注 0 浏览12 1答案
-
SQL查询聚合可能不会出现在WHERE子句中
2021-05-10 关注 0 浏览85 1答案