在docker容器中获取主机IP

时间:2014-10-31 11:19:37

标签: c docker

我在Ubuntu系统上有一个ubuntu容器。容器就像客户端一样,Ubuntu主机系统就像服务器一样。所以我想通过套接字编程将数据发送到我的主机系统。要将数据发送到主机系统,我想要主机IP。如何在容器中获取Host 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);

Container 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?

1 个答案:

答案 0 :(得分:2)

  

但我的主机系统idp是:192.168.2.101

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

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


无论如何,172.17.42.1地址可能会达到您想要的100% - 但是,无论如何,您的流量仍然会流过该“界面”。