我正在使用托管一组 docker 容器的 CentOS 7 操作系统。
通过使用 Web 浏览器,我可以访问端口 80 上的服务并得到响应。一点本地知识可以帮助我理解响应来自一个 docker 容器。
但是,我有一个大问题:我似乎找不到操作系统指示端口 80 已打开的方法。这是我尝试过的(全部与root
用户一起):
netstat -tulnp | grep 80
列表没有什么监听80端口ss -nutlp | grep 80
列出没有在端口 80 上侦听的内容lsof -i -P | grep 80
还列出了端口 80 上没有侦听的内容wget 127.0.0.1
成功获取index.html
审问码头工人直接通过docker ps
并不是我真正想要的答案,因为我们必须能够询问操作系统并查看哪个进程负责处理对端口 80 的请求。这也没有帮助,因为docker ps
返回一些PORTS 列中具有以下条目的容器:
PORTS
80/tcp
8080/tcp
80/tcp
再说一遍,我不想去泊坞窗寻找答案,因为必须有一种方法来询问操作系统并识别负责处理端口 80 的进程。
我唯一的猜测是泊坞窗安装某种低级驱动程序来拦截此类网络请求。
任何有关如何让 CentOS 分发此信息以及命令行命令的建议,我们将不胜感激!
答案1
您确定 docker 主机正在侦听端口 80 吗?它可能会从端口 80 重定向到它所在的任何端口是使用内置防火墙监听。
如果您正在运行 IPTABLES,您可以使用以下命令进行检查:
iptables -L -t nat
然后你会看到一个名为 DOCKER 的链,它会告诉你有哪些重定向,类似于:
Chain DOCKER (2 references)
target prot opt source destination
RETURN all -- anywhere anywhere
RETURN all -- anywhere anywhere
DNAT tcp -- anywhere anywhere tcp dpt:http-alt to:172.17.0.3:80
DNAT tcp -- anywhere anywhere tcp dpt:4433 to:172.17.0.3:443
DNAT tcp -- anywhere anywhere tcp dpt:1688 to:172.17.0.4:1688