2014-10-31 218 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% - 但是你把它這樣你的流量將仍然流過的是「接口」。

相關問題