正如标题所示,我需要能够检索docker托管的IP地址以及从主机到容器的portmap,并在容器内部完成这些工作。
当前回答
docker network inspect bridge -f '{{range .IPAM.Config}}{{.Gateway}}{{end}}'
可以使用docker网络inspect来检索它
其他回答
如果您在Service Fabric集群上运行Windows容器,则主机的IP地址可以通过环境变量Fabric_NodeIPOrFQDN获得。服务Fabric环境变量
我使用的解决方案是基于一个“服务器”,它在接收到http请求时返回Docker主机的外部地址。
在“服务器”上:
1)启动jwilder/nginx-proxy
# docker run -d -p <external server port>:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
2)启动ipify container
# docker run -e VIRTUAL_HOST=<external server name/address> --detach --name ipify osixia/ipify-api:0.1.0
现在,当容器向服务器发送http请求时,例如。
# curl http://<external server name/address>:<external server port>
Docker主机的IP地址由ipify通过http报头"X-Forwarded-For"返回
示例(ipify服务器名称为“ipify.example.com”,端口为80,docker主机IP为10.20.30.40):
# docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
# docker run -e VIRTUAL_HOST=ipify.example.com --detach --name ipify osixia/ipify-api:0.1.0
在容器内部,你现在可以调用:
# curl http://ipify.example.com
10.20.30.40
唯一的方法是在创建容器时将主机信息作为环境传递
run --env <key>=<value>
docker network inspect bridge -f '{{range .IPAM.Config}}{{.Gateway}}{{end}}'
可以使用docker网络inspect来检索它
我有Ubuntu 16.03。对我来说
docker run --add-host dockerhost:`/sbin/ip route|awk '/default/ { print $3}'` [image]
不工作(错误的ip正在生成)
我的解决方案是:
docker run --add-host dockerhost:`docker network inspect --format='{{range .IPAM.Config}}{{.Gateway}}{{end}}' bridge` [image]
推荐文章
- Linux命令将域名转换为IP
- 试图连接到https://index.docker.io时,网络超时
- 为每个Docker图像查找图层和图层大小
- 如何避免在为Python项目构建Docker映像时重新安装包?
- 如何用docker-compose更新现有图像?
- 如何在构建docker期间设置环境变量
- 拉访问拒绝存储库不存在或可能需要docker登录
- 如何在ENTRYPOINT数组中使用Docker环境变量?
- Docker:容器不断地重新启动
- Mac/OS X上的/var/lib/docker在哪里
- 如何用docker-compose标记docker图像
- 从IP地址获取位置
- 从环境文件中读入环境变量
- 禁用特定RUN命令的缓存
- 从Docker容器获取环境变量