Docker大致可以分为五种网络模式:
1. bridge
–network=bridge
默认网络,Docker启动后创建一个docker0网桥,默认创建的容器是添加到这个网桥中
2. host
–network=host
容器不会获得一个独立的network namespace,而是于宿主机共用一个。这就意味着容器不会有自己的网卡信息,而是使用宿主机的。容器除了网络,其他都是隔离的
3. none
–network=none
容器获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置
4. container
–network=container:Name/ID
与指定容器使用同一个network namespace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的
5. 自定义网络
与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名进行容器间的网络通信
PS:数据走向:
数据包 –> veth2 –> veth0 –> docker0 -(SNAT)-> eth0 –> 外界
数据包 –> eth0 -(DNAT)-> docker0 –> veth0 –> veth2