当前位置: 首页 > 面试题库 >

使用Docker时,已建立的连接不会出现在netstat中

糜野
2023-03-14
问题内容

我有一个在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)



 类似资料:
  • 问题内容: 在受到谴责之前,请阻止已建立的异常连接。谁可以给我解决方案 问题答案: 那是因为必须在建立连接之前调用该函数。检查此链接 http://developer.android.com/reference/java/net/HttpURLConnection.html#setRequestMethod(java.lang.String) 因此最好在openConnection()之前调用它。

  • 本文向大家介绍Docker如何使用link建立容器之间的连接,包括了Docker如何使用link建立容器之间的连接的使用技巧和注意事项,需要的朋友参考一下 我们在使用Docker的时候,经常可能需要连接到其他的容器,比如:web服务需要连接数据库。按照往常的做法,需要先启动数据库的容器,映射出端口来,然后配置好客户端的容器,再去访问。其实针对这种场景,Docker提供了--link 参数来满足。

  • 我已经按照Digicert在下面链接上提供的说明在服务器上安装了SSL/TLS证书。https://www.digicert.com/ssl-certificate-installation-java.htm 还定义了TrustManager,但仍然无法建立安全连接。我收到连接失败错误,原因是“连接建立错误:net::ERR_SSL_VERSION_或_CIPHER_不匹配” 下面是我添加SSL支

  • 问题内容: 我正在尝试使用启动多个docker容器,但出现以下(部分)错误消息: 按照https://github.com/docker/docker/issues/8714的建议,我尝试了命令 导致 但是,我在这里看不到任何可以杀死的进程ID。任何想法是什么导致此错误? 问题答案: 以下https://unix.stackexchange.com/questions/106561/finding

  • 有人能在这个问题上帮忙吗。

  • 我尝试使用db2jcc.jar并成功地建立了与db2的连接,但现在我尝试使用jt400.jar 我尝试使用com.ibm.as400.access.as400JDBCDriver,但无法建立连接。 有人能帮我吗?或者提供一个示例代码,其中连接字符串用jt400.jar连接到db2。