在Docker容器中获取主机IP
问题描述:
我在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集装箱?
答
但我的主机系统IDP是:192.168.2.101
您的主机可能有多个地址。 docker0上可能有192.168.2.101
eth0
或wlan0
等和172.17.42.1
- 用于与容器通信的虚拟接口。
没有“标准”方式来获取主机上配置的其他地址;我没有找到任何docker方法来做到这一点。
在任何情况下,172.17.42.1
地址可能没有你想要什么100% - 但是你把它这样你的流量将仍然流过的是“接口”。