Docker容器网络模式
1.none网络
1)使用默认网络模式创建一个BusyBox容器,用于对比none网络模式;
测试网络,可以正常连接外网。
2)再创建一个none网络模式的BusyBox容器;
测试网络连接,无法连接外网。
总结:none网络模式即容器拥有自己的网络命名空间,但不为容器做任何网络配置,如没有其他的网络配置,该容器将完全独立于网络,用户可以根据需要为容器添加网卡。此模式拥有所有端口。(none网络模式配置网络)
2.host网络
1)运行一个网络模式为host的Nginx容器,并查看容器信息;
2)使用curl工具测试容器网站是否能够被访问。
3)在主机上使用浏览器访问 192.168.138.140:80
总结:host网络模式没有命名空间隔离,相当于docker容器与宿主机公用一个网络,使用宿主机的网卡、IP和端口信息(这点可以在主机浏览器上访问192.168.138.140:80看出),无需使用端口映射,此时容器不再拥有隔离的独立的网络栈。不拥有所有端口资源。
3.bridge网络
1)在后台运行一个命名为test-nginx的容器,并指定它的网络模式为bridge,然后使用brctl show
查看网卡信息;
注:使用命令
brctl show
命令之前,需要安装网桥工具管理包,安装命令为:
yum install -y bridge-utils
在同一个服务器中,可能运行着多个业务,若这些业务都是用默认端口将会产生冲突,这时就需要容器映射不同的端口。
2)安装Apache服务;
3)启动服务,然后通过查看端口的形式验证Apache是否正常运行;
4)在后台运行一个命名为test2-nginx的Nginx容器,并将容器80端口映射到宿主机的8000端口,访问宿主机的8000端口;
5)访问80端口即Apache服务;
从以上操作可以看出,通过宿主机的8000端口可以正常访问Nginx容器,通过宿主机的80端口可以正常访问Apache服务。
通过端口映射,容器与容器、容器与宿主机的业务之间就不会出现冲突,保证业务都能够正常范围。
总结:bridge网络模式是docker默认的网络模式,受docker管理的linux桥接网络。默认同一个桥的容器可以相互通讯。
4.container网络
1)创建一个容器,命名为test2,此容器的网络模式默认为bridge,然后查看容器IP信息。
可以看到此容器的IP地址为172.17.0.8
2)创建一个被命名位test-container的BusyBox容器,并共享test2的网络命名空间。
总结:container网络模式指定新容器和已存在容器共享一个网络命名空间,这种模式拥有网络隔离,可以在一定程度上节省网络资源,容器内部依然不会拥有所有端口。