Docker for windows 容器内网通过独立IP直接访问的方法

Docker for windows 容器内网通过独立IP直接访问的方法

 

Docker官方推荐我们通过端口映射的方式把Docker容器的服务提供给宿主机或者局域网其他容器使用。一般过程是:

1、Docker进程通过监听宿主机的某个端口,将该端口的数据包发送给Docker容器

2、宿主机可以打开防火墙让局域网其他设备通过访问宿主机的端口进而访问docker的端口

但在实际使用中并不是很方便。

 

以下在win10环境中队DockerDocker容器通过独立IP暴露给局域网的方法进行记录。

Docker的默认启动方式中,会产生一块虚拟网卡,然后容器内自行分配单独的网卡和IP。可以在宿主机上通过ipconfig命令看到这个虚拟网卡。

Docker for windows 容器内网通过独立IP直接访问的方法

 

查看容器IP地址

打开一个容器,可以看到容器ip地址为自动分配的。

Docker for windows 容器内网通过独立IP直接访问的方法

通过宿主机无法ping通

Docker for windows 容器内网通过独立IP直接访问的方法

 

通过配置路由表实现ip互通

查看route print

Docker for windows 容器内网通过独立IP直接访问的方法

 

查看docker 的ip地址

Docker for windows 容器内网通过独立IP直接访问的方法

暴露给宿主机的为10.0.75.1

 

添加路由

route -p add 172.17.0.0 MASK 255.255.255.0 10.0.75.2

Docker for windows 容器内网通过独立IP直接访问的方法

重新ping容器地址

Docker for windows 容器内网通过独立IP直接访问的方法

现在则可以直接通过ip访问。

由于docker默认采用bridge网络,每次容器启动时自动分配ip,我们可以创建自己的网络bridge1,在创建容器时指定ip,如需独立ip访问则另外增加路由。

route -p add 172.18.12.0 MASK 255.255.255.0 10.0.75.2

如果删除路由:

route delete 172.18.12.0