Docker学习一-MySQL主从热备
Docker学习二-MySQL双主互备

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

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

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

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

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

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

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

docker 容器内部使用ping docker 容器内部使用pci_docker


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

cat /ect/hosts

docker 容器内部使用ping docker 容器内部使用pci_docker 容器内部使用ping_02


通过宿主机无法直接ping通容器的IP地址。

docker 容器内部使用ping docker 容器内部使用pci_Docker_03


在这里,我们通过配置路由表实现ip互通

先查看电脑路由信息

route print

docker 容器内部使用ping docker 容器内部使用pci_docker_04


查看docker的地址,相当于网关地址,所有docker中容器的IP都走这个网关,我们直接右键->Settings->Network可以查看到docker的内部虚拟转换的子网IP地址和MAC地址,但是这里不能直接使用这个。

docker 容器内部使用ping docker 容器内部使用pci_docker 容器内部使用ping_05


我们通过ipconfig查看到的DockerNAT的地址是10.0.75.1,这个是暴露给宿主机的地址,我们真正连接docker的地址是10.0.75.2

docker 容器内部使用ping docker 容器内部使用pci_docker 容器内部使用ping_06


添加路由

route -p add 172.17.0.0 MASK 255.255.255.0 10.0.75.2

表示网段172.17.0的网段都经过10.0.75.2这个网关做路由

docker 容器内部使用ping docker 容器内部使用pci_docker 容器内部使用ping_07


添加好了永久路由。

重新ping重启地址

docker 容器内部使用ping docker 容器内部使用pci_docker_08


用数据库测试连接。

docker 容器内部使用ping docker 容器内部使用pci_docker 容器内部使用ping_09


  这样就方便了我们访问多数据源,多节点的配置,可以更加方便的使用docker的功能。