[求教]在 docker 容器内部如何获取宿主机的 ip

2020-06-20 09:42:13 +08:00
 Ezez
需求:开发一个插件给通过 docker 部署的服务集群用,插件的一个功能需要获取到宿主机的 ip
已知:可通过 k8s 等管理 docker 的工具获取宿主机 ip
问题:不通过 k8s 等管理工具有办法获取到宿主机的 ip 吗
6168 次点击
所在节点    Docker
16 条回复
csuzhangxc
2020-06-20 10:27:31 +08:00
不通过环境变量传进去?
ypcs03
2020-06-20 10:30:52 +08:00
aws ec2 可以通过 IMDS, 其他的 cloud provider 应该也有类似的吧。通用的貌似不太容易,还跟容器的 config 有关比如--net=host.
moonsn
2020-06-20 10:34:02 +08:00
I WANT TO CONNECT FROM A CONTAINER TO A SERVICE ON THE HOST
The host has a changing IP address (or none if you have no network access). From 18.03 onwards our recommendation is to connect to the special DNS name host.docker.internal, which resolves to the internal IP address used by the host. This is for development purpose and will not work in a production environment outside of Docker Desktop for Mac.

The gateway is also reachable as gateway.docker.internal.
moonsn
2020-06-20 10:35:02 +08:00
macos 的话,如上。
Latin
2020-06-20 10:37:22 +08:00
挂宿主机 /proc 到容器 /host/proc,
运行容器加 --privileged
nsenter --net=/host/proc/1/ns/net ifconfig 网卡名
cheng6563
2020-06-20 11:38:40 +08:00
没办法,脚本里先获得 IP 再启动容器吧
0312birdzhang
2020-06-20 12:26:59 +08:00
1 楼加一,其他方法不推荐
Ezez
2020-06-20 14:48:15 +08:00
@moonsn1994
@Latin
@0312birdzhang
这三个方法我目前都查到了,但是现有条件都不支持,感觉这个功能完成不了了😭
Jirajine
2020-06-20 14:50:27 +08:00
Ezez
2020-06-20 14:50:31 +08:00
@cheng6563 部署这一块不是由我来做的
Ezez
2020-06-20 14:52:10 +08:00
我的目的是要把这个插件能做成一个通用的插件,查了一圈,感觉不太可能,毕竟不同项目,配置或者是启动方式都不一样
HTSdTt3WygdgQQGe
2020-06-20 15:47:32 +08:00
curl ip.sb
Smilencer
2020-06-20 15:58:09 +08:00
我的做法是容器启动时,增加 host,自动将宿主机 docker 网关映射到 dockerhost
```
docker run --add-host=dockerhost:`docker network inspect --format='{{range .IPAM.Config}}{{.Gateway}}{{end}}' bridge`
```
holosola
2020-06-20 16:16:58 +08:00
试试用 host.docker.internal
leschans
2020-06-20 19:42:39 +08:00
curl -s ip.sb
julyclyde
2020-06-28 18:17:02 +08:00
需求有错

跨机器的通信,命名服务也应该是外部的而不是上下级传递的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/683242

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX