在Linux上本机运行Docker时,您可以使用docker0接口的IP地址访问主机服务.从容器内部,这将是您的默认路由.
例如,在我的系统上:
$ip addr show docker0
7: docker0: mtu 1500 qdisc noqueue state DOWN group default
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::f4d2:49ff:fedd:28a0/64 scope link
valid_lft forever preferred_lft forever
在容器内:
# ip route show
default via 172.17.0.1 dev eth0
172.17.0.0/16 dev eth0 src 172.17.0.4
使用简单的shell提取此IP地址相当容易
脚本:
#!/bin/sh
hostip=$(ip route show | awk '/default/ {print $3}')
echo $hostip
您可能需要修改主机上的iptables规则以允许
来自Docker容器的连接.像这样的东西会做的
特技:
# iptables -A INPUT -i docker0 -j ACCEPT
这将允许从Docker访问主机上的任何端口
容器.注意:
>订购了iptables规则,此规则可能会也可能不会
正确的事情取决于之前的其他规则.
>您将只能访问(a)的主机服务
收听INADDR_ANY(又名0.0.0.0)或明确说明
在docker0界面上收听.