在Docker容器中获取主机IP

我在Ubuntu系统上有一个Ubuntu的容器。 容器就像客户端,Ubuntu主机系统像服务器一样行事。 所以我想通过套接字编程发送数据到我的主机系统。 要将数据发送到主机系统,我希望主机IP。 如何获取容器中的主机IP。 我试过了

/sbin/ip route|awk '/default/ { print $3 }' 

但它返回dockerIP: 172.17.42.1 。 但是我的主机系统idp是: 192.168.2.101 。 如何获得在docker集装箱主机IP。 你可以看下面的代码来知道问题。

Ubuntu 主机server.c如下所示:

 bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); listen(listenfd, 10); connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); 

容器client.c如下所示:

 serverAddr.sin_family = AF_INET; serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // <-- I want place my Host IP here 

如何获得容器中的主机IP?

但是我的主机系统idp是:192.168.2.101

你的主机可能有多个地址。eth0wlan0等上可能有192.168.2.101172.17.42.1上有172.17.42.1 – 用于与容器通信的虚拟接口。

没有“标准”的方式来获取主机上configuration的其他地址; 我没有find任何docker的方式来做到这一点。


无论如何, 172.17.42.1地址可能是你想要的100% – 不过你把它放在你的stream量上的方式仍然会stream过那个“界面”。