前言
Docker 为我们提供了多种类型的网络模式,我们可以根据自己的需求使用系统默认的网络或者创建自己的网络。
Docker 默认的网络
在我们安装完 Docker enginee 后, 会自动生成3种默认的网络模式。 我们可以运行命令查看:
$ docker network ls
bridge - 使用Docker 0 网络, containers只能在一个Host上面进行通信。在创建Container时,如果不特殊指定网络,会默认使用bridge。创建在bridge网络上面的container里面,我们在container的host文件(# cat /etc/hosts
)可以看到对用IP信息
root@0cb243cd1293:/# cat /etc/hosts
172.17.0.2 3386a527aa08
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
none - ?? 貌似没啥用啊
host - 基于本机的Docker host, 貌似没啥用。
bridge 网络模式拓扑图, 由于bridge本身不能够访问外部或被外部访问,我们可以暴漏端口到外部以实现通信。但是bridge模式要求所有container必须要一个Docker host里
docker_gwbridge
网络
这个网络也是Docker engine 自己生成的,只不过是当我们运行Docker swarm 以后 (创建网络+添加节点),自动生成 overlay 网络,用于为swarm 提供 overlay 网络通信。
An overlay network with an external key-value store
由于 Swarm 使用了内置的overlay网络“docker_gwbridge
”, 所以当我们要在不适用swarm mode 且要求在不同的container之间通信时,就需要用到这个网络模式。
由于使用这种模式必须要提供 “key-value stores”支持,所以配置起来会比较发杂。我们先看一下她的拓扑图