在Docker容器中查找打开的套接字
我已经连接到docker集装箱,并需要找出由java应用程序打开的套接字的数量。 不幸的是,在容器中没有lsof,netstat可用。 / proc / PID / net / tcp中没有数据。 有什么方法可以find这些数据?
我喜欢netshoot这个。 您可以在同一个networking中运行一个容器,甚至是pid命名空间,然后使用netshoot中的工具来分析另一个容器的networking:
$ docker run -d -p 8888:80 --name nginx-test nginx d8a90f5c7d1744483ae6d26cc97dad222ed237b5c4211f711c9f15f88252897f $ docker run --net container:nginx-test --pid container:nginx-test -it --rm nicolaka/netshoot / # netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro / # ps -ef PID USER TIME COMMAND 1 root 0:00 nginx: master process nginx -g daemon off; 7 104 0:00 nginx: worker process 8 root 0:00 sh 15 root 0:00 ps -ef
或者, 只要与docker守护进程在同一个框中 ,就可以在主机中看到: /proc/PID/net/tcp
。 这比@Bitch的答案不那么优雅。
你需要做的是找出容器外的进程的PID(在主要的pid命名空间,从技术上说,你的主机)。
ps aux | grep java
在你的容器里面,你的java
有一个pid; 但在外面有另外一个可以用来访问你所请求的信息的pid: /proc/PID/net/tcp
- gocd泊坞窗容器不svingpipe道
- jenkinsdocker插件+提交docker奴隶,如何将其推送到外部registry。 保存在云模板中configuration的Docker主机上的图像
- 是否有可能将Docker Hub公开托pipe的映像部署到Kubernetes Container Engine,而无需将其上传到Container Contay?
- 当我的主机切换networking时,Docker容器松动networking(Mac OSX)
- 无法在tomcat Docker中运行Spring Mvc教程示例
- Heroku的Docker平台上有哪些共享库?
- Docker:客户机服务器程序,每个都以Container身份运行,无法使用POSIX套接字API互相通信
- Cassandra节点不在Docker中链接
- 无法将我的Docker的自动构build存储库切换到组织的私有存储库