gpt4 book ai didi

docker - 为什么 HostPort 没有显示在主机 Netstat 的输出中

转载 作者:行者123 更新时间:2023-12-02 20:41:22 27 4
gpt4 key购买 nike

我使用kubectl和yaml文件创建目标pod,发现pod中的进程正在监听目标端口。

令我惊讶的是,在主机的 netstat -tunlpnetstat -alpnetstat -an 的输出中看不到该端口机器。但如果我尝试 telnet localhost targetPort 就可以了!!!

为什么会出现这种情况?谁能解释一下吗?

最佳答案

这是因为docker。默认情况下,docker 不会将容器网络命名空间添加到 Linux 运行时数据(/var/run 作为/run 中的 tmpfs 安装),这是您运行 ip netns 命令时看到的内容。

要查看网络命名空间,您需要使用nsenter

  1. 获取容器 ID。
docker ps
  • 获取容器进程 ID。
  • docker inspect --format '{{ .State.Pid }}' <<container-id>>
  • 现在使用 nsenter 显示 pod 网络空间。与 docker exec 相比,使用 nsenter 的优点是,nsenter 将使您能够执行 pod 内节点上可用的所有工具或命令,其中 docker exec > 将仅允许有限或受限制的命令。
  • nsenter -t <<container pid>> -n netstat -tunlp 

    关于docker - 为什么 HostPort 没有显示在主机 Netstat 的输出中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63454535/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com