2014-10-31 319 views
1

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

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

但是它返回的是Docker ip: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集装箱?

回答

2

但我的主机系统IDP是:192.168.2.101

您的主机可能有多个地址。 docker0上可能有192.168.2.101eth0wlan0等和172.17.42.1 - 用于与容器通信的虚拟接口。

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


在任何情况下,172.17.42.1地址可能没有你想要什么100% - 但是你把它这样你的流量将仍然流过的是“接口”。

相关问题