Docker网络相关内容
这篇文章的主要目的是这样的,实验目标,就是安装了CentOS,然后想要通过Win10能ping通CentOS。我的系统是win10,安装了Hyper-V版的Docker。
1.安装ifconfig命令
CentOS安装后,没有ifconfig命令。
1 | ## 查找 |
2.windos上增加路由映射
(1) 使用 ifconfig 查看容器CentOS的ip:
(2) 可以看到Docker中的网络是以172.17.0.0为前缀的。参考文章中提到了一个Docker Quickstart Terminal 工具,启动这个工具就可以查看docker的IP,但是我没有找到这个工具。右键右小角小鲸鱼图标,然后打开setting->Resources->Network,可以看到这里有个Docker subnet网络,那就当成docker的IP进行处理试试。
(3) 然后打开win10的powershell,在window10中添加路由:
1 | route add -p 172.17.0.0 mask 255.255.0.0 192.168.65.0 |
使用ping进行测试,结果不行。在多次增加路由和删除路由的过程中,我发现了一个奇怪的现象,有些直接返回的是请求超时,有的返回的是无法访问主机。是不是因为linux防火墙或者docker防火墙的原因呢?还有一个奇怪的地方,就是在docker的虚拟机centos中可以ping通windows主机,也可以ping通windows主机所在的网关。而反过来就不行。
1.WIN10系统和Docker内部容器IP互通
2.windows宿主机ping不通Docker容器的解决办法
3.Docker Quickstart Terminal for Docker for Windows
4.docker查看容器IP地址
5.windows下添加路由
6.win10 docker通过ip访问容器
7.docker for windows 容器内网通过独立IP直接访问的方法
(4) 尝试
在windows上使用ipconfig命令,查看到了Docker创建的虚拟网卡的ip地址是192.168.78.113,无论从windows去ping这个地址,还是从虚拟机里ping这个地址,都是可以ping通的。
然后我有尝试添加了新的路由
1 | ## 删除路由 |
(5) 继续尝试,通过参考资料,虽然界面不太一样,但是基本上都是一个样的操作,首先windows上ipconfig,查看vEthernet的ip地址;然后设置Docker的NetWork,为这个ip;最后使用route为windows添加路由。有一点不同的是,别人的vEthernet的ip地址都是10.0.75.1,而我的是192.168.78.113
1.windows10配置Docker容器独立IP地址互相通信
2.24 28 30 位的子网掩码是多少
3.子网掩码为255.255.255.240
4.Docker 网络-端口映射、容器链接、Networking
5.Win10 Ping通Docker Toolbox容器
(6) 我又想起来了,网上很多都是使用的Docker Toolbox安装,可以使用iptables修改toolbox启动的默认docker machine的防火墙规则,但是我使用的是Docker for Windows安装的,没有iptables这个东西。那会不是是Hyper-V的防火墙呢?
结果很不如人意,因为我的防火墙已经关闭了。
1.Hyper-V Server关闭防火墙命令
2.Win10下给Hyper-V配置网络——Bridging 和 Nat 模式
3.WIN10中使用Hyper-V 配置虚拟机宿主机互ping
4.配置Microsoft Hyper-V Server
(7) 最后放弃ping的想法了。还是老老实实的的做端口映射吧。
3.端口映射
端口映射可以在调用docker run是进行指定,
1 | ## 将虚拟机的80端口映射到主机上 |
1.Docker 给运行中的容器设置端口映射的方法
2.通过容器提交镜像(docker commit)以及推送镜像(docker push)笔记
3.Docker 问答录(100 问)
4.修改docker容器端口映射的方法
5.教你如何修改运行中的docker容器的端口映射
6.解决Windows下无法对docker容器进行端口映射的问题
7.Win10下使用Docker
4.docker-compose网络
不设置networks,会默认的创建一个,所有的容器都会加入到这个网络中,并进行命名,所以才可以通过容器名的方式访问相关的容器。