Docker 容器中的 socket ip port 如何配置?
docker 桥接方式 启动
docker run -dit --name test -p 9999:9999 镜像 ID
程序里面 socket 监听的是 和宿主机相同的 ip telnet 不通
但是 监听 0.0.0.0 就可以 这是为何?
0.0.0.0 是任何IP都可以访问,容器里都配置这个,因为容器的内部IP是随机分配的,在创建前不知道自己容器的地址(除非配置指定),所以监听的地址一般都配置成0.0.0.0。
需要配置转发规则来实现。
在设置好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容器进行通信。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。