docker容器固定IP,让宿主机所在的局域网完全访问 Docker

mowen 2019-08-15 4602

环境为win10,局域网段192.168.1.x,网关192.168.1.1


1、安装docker for window


2、打开docker的setting,查看默认的docker宿主所在的虚拟网段为10.0.75.0:




3、现在我们给docker创建一个自定义网段,和我们局域网段一致,均为192.168.1.x,别名为ccnetwork

docker network create --subnet=192.168.1.0/24 --gateway=192.168.1.1 ccnetwork


4、创建docker容器的时候指定使用ccnetwork该网段,并且为容器分配固定IP为192.168.1.123

docker run --privileged -itd --net ccnetwork --ip 192.168.1.123 --name mydocker ccproxy


5、启动容器后发现,容器可以完全访问外网网络,也可以访问局域网段192.168.1.x


6、但是局域网192.168.1.x所在的机器无法访问该容器,即:192.168.1.123,这是为什么呢?因为其实容器并不是直接分配在win10上的,而是分配在docker宿主环境中,因此不是我们想象的这样:


win10            <->        docker容器

-------------------------------------------

192.168.1.x                  192.168.1.123


而是:


win10            <->        docker宿主       <->     docker容器

-------------------------------------------------------------------------------

192.168.1.x                  10.0.75.1                       10.0.75.2 / 192.168.1.123


10.0.75.2这个才是docker容器位于docker宿主虚拟网段10.0.75.x中分配的真实ip


因此,我们需要在win10上修改下的route规则,route print看下默认的规则先:


然后:route -p add 192.168.1.0 mask 255.255.255.0 10.0.75.2


are you ok?

最新回复 (0)
返回
发新帖
X