我目前正在尝试将ip设置为容器,该容器可以被网络中的任何其他计算机访问。我的docker-host机器的网络是9.158.143.0/24,网关为9.158.143.254。 尝试在子网9.158.143.0/24内设置ip(任意免费),网络类型为bridge.It不起作用(甚至无法在docker主机内ping容器)。 然后创建一个用户定义的网络,子网为9.10.10.0/24,网络驱动程序为网桥。创建的容器是可ping的,但只能在docker主机中。 有没有办法从网络中的所有机器(不仅仅是泊坞主机)访问此容器。 PS:我不想公开这个端口。(改变路线是否有用..我知道网络很少)
我尝试使用macvlan驱动程序的用户定义网络。在这种情况下,我能够从其他机器ping容器,但不能从容器存在的docker主机上ping
答案 0 :(得分:0)
为此,您需要:
1-在本地网络上为此容器指定一个新地址;
2-将此地址配置为docker引擎主机上的辅助地址;
3-启用docker引擎主机上本地接口之间的路由;
4-使用iptables将这个新地址的连接重定向到你的容器。
以下是一个例子:
我们假设:
您的容器实例名为myinstance
您的LAN网络接口名为eth0
您已选择LAN上的可用网络地址192.168.1.178
因此,您需要执行以下操作:
启动容器(在本例中,我们启动一个Web服务器):
docker run --rm -t -i --name=mycontainer httpd:2.2-alpine
启用本地IP路由:
sysctl -w net.ipv4.ip_forward=1
为您的容器添加辅助地址:
ip addr add 192.168.1.178/24 dev eth0
将此地址的连接重定向到您的容器:
首先,找到您的容器本地地址:
%docker inspect --format =' {{range .NetworkSettings.Networks}} {{。IPAddress}} {{end}}' myContainer中
172.17.0.2
现在,将此本地地址与iptables
:
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.178/32 -j DNAT --to 172.17.0.2
最后,您可以通过从LAN上的任何其他主机访问http://192.168.1.178/来检查它是否有效。