1.Docker网络模式
Docker默认有三种网络模式,生成容器时不指定网络模式默认使用bridge(桥接)模式。
使用命令查看当前Docker所有的网络模式
[root@node1 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
9cfa7b1abd07 bridge bridge local
54f94840000c host host local
79d33826245f none null local
1.1host模式(和宿主机共享网络)
连接到host网络的容器共享Docker host的网络栈,容器的网络配置与host完全一样。**
**可以通过-network-host 指定使用host网络
docker run -it --network=host busybox
Docker host的另一个用途是让容器可以直接配置host网路,比如某些跨host的网络解决方案,其本身也是以容器方式运行的,这些方案需要对网络进行配置,比如管理iptables ### 1.2none模式 none网络就是什么都没有的网络。挂在这个网络下的容器除了lo,没有其他网卡。**容器创建时,可以通过-network=none指定使用none网络。
shell
docker run -it --network=none busybox
一些对安全性要求高并且不需要联网的应用可以使用none网络。
比如某个容器的唯一用途是生成随机密码,就可以放到none网络中避免密码被窃取。当然大部分容器是需要网络的。
### 1.3bridge模式(默认方式)-网桥模式
Docker安装时会创建一个命名为docker0的Linux bridge。如果不指定-network,创建的容器默认都会挂到docker0上**
使用了 bride 创建的容器,其网络与主机以及其他容器隔离,以太网接口、端口、路由表以及 DNS配置 都是独立的。每个容器都好像是一个独立的主机 ,这便是 bridge(网桥)的作用。但是因为 docker0 的存在,对于容器来说,可以通过 ip 访问别的容器。
容器A 可以通过 172.17.0.3 访问容器B,同样,主机也可以使用这个 ip 访问容器B 中的服务。
1.4 link
—link 就是我们在hosts配置中增加了一个172.18.0.3 tomcat02 3128….. 域名解析
目前docker已经不建议使用 —link了
docker0问题:他不支持容器名连接访问
2.自定义网络
2.1 我们可以自定义一个网络!
docker network create —driver bridge —subnet 192.168.0.1/16 —gateway 192.168.0.1 mynet(自定义网络名称)
创建网络 —driver 是网络模式,—subnet是子网掩码,后面的/16(还有/24)表示可以生成6万多个ip, —gateway是网关地址



我们自定义网络docker是可以帮助我们维护好对应的关系,推荐我们平时使用这样的网络!
好处:
redis -不同的集群使用不同的网络,保证集群是安全健康的
mysql -不同的集群使用不同的网络,保证集群是安全健康的