开发者社区> 问答> 正文

Docker 容器中的 socket ip port 如何配置?

Docker 容器中的 socket ip port 如何配置?
docker 桥接方式 启动
docker run -dit --name test -p 9999:9999 镜像 ID
程序里面 socket 监听的是 和宿主机相同的 ip telnet 不通
但是 监听 0.0.0.0 就可以 这是为何?

展开
收起
OSC开源社区 2024-06-13 08:01:38 62 0
2 条回答
写回答
取消 提交回答
  • 0.0.0.0 是任何IP都可以访问,容器里都配置这个,因为容器的内部IP是随机分配的,在创建前不知道自己容器的地址(除非配置指定),所以监听的地址一般都配置成0.0.0.0。

    2024-06-15 17:01:07
    赞同 展开评论 打赏
  • 需要配置转发规则来实现。

    在设置好Docker容器的网络模式并启动容器后,我们需要获取容器的IP地址。可以通过docker inspect命令来获取容器的详细信息,包括IP地址。

    docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-container
    

    在获取到Docker容器的IP地址后,可以在本地进行端口映射。这可以通过修改本地的端口转发规则来实现。

    iptables -t nat -A PREROUTING -p tcp --dport <本地端口> -j DNAT --to-destination <Docker容器IP地址>:<容器端口>
    iptables -t nat -A POSTROUTING -p tcp -d <Docker容器IP地址> --dport <容器端口> -j SNAT --to-source <本地IP地址>
    

    完成端口映射后,就可以通过访问映射后的端口来与Docker容器进行通信。

    2024-06-14 07:56:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
应用 Docker 进行持续交付:用技术改变交付路程 立即下载
从Docker到容器服务 立即下载
Docker@Alibaba——超大规模Docker化的实战经验 立即下载