1、能访问键值存储区。Docker 支持 Consul、Etcd 和 ZooKeeper(分布式的)键值存储区。
2、能连接到键值存储区的主机群。
3、在群集中的每个主机上配置正确的引擎守护进程。
而支持 overlay 网络的 Docker 选项有:
1、--cluster-store
2、--cluster-store-opt
3、--cluster-advertise
Docker 默认会自动为创建的网路创建一个非重叠的子网,不过强烈推荐使用“--subnet”选项来明确指定一个子网。bridge 网络只能指定一个子网,而 overlay 网络可以指定多个。
除“--subnet”之外,还可以指定“--gateway”、“--ip-range”和“--aux-address”等多个选项。示例:
$ docker network create -d overlay \ --subnet=192.168.0.0/16 \ --subnet=192.170.0.0/16 \ --gateway=192.168.0.100 \ --gateway=192.170.0.100 \ --ip-range=192.168.1.0/24 \ --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6"\ --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \ my-multihost-network
创建自定义网络时,还可以传递额外的选项给底层驱动。bridge 驱动接受下表所示的选项。
选项 | 简写 | 说明 |
com.docker.network.bridge.name | - | bridge 名字 |
com.docker.network.bridge.enable_ip_masquerade | --ip-masq | 允许 IP 伪装 |
com.docker.network.bridge.enable_icc | --icc | 允许/禁止内部容器连接 |
com.docker.network.bridge.host_binding_ipv4 | --ip | 绑定容器端口时的默认 IP |
com.docker.network.driver.mtu | --mtu | 设置容器网络的 MTU |
overlay 驱动也支持 --mtu 选项。
下面这些参数可以传递给“docker network create”用于任意网络驱动。
选项 | 简写 | 说明 |
--internal | - | 限制外界访问 |
--ipv6 | --ipv6 | 允许 IPv6 网络 |
下例使用“-o”选项来指定了绑定端口时的 IP 地址:
$ docker network create -o "com.docker.network.bridge.host_binding_ipv4"="172.23.0.1" myNetwork
同一个自定义网络中的容器名可被自动解析成 IP 地址,但默认的 bridge 网络中却只能利用 IP 地址来进行互相通信,除非使用了“--link”选项。使用该选项添加了如下功能:
1、解析容器名为 IP。
2、使用“--link=containerName:alias”的形式可为要链接的容器定义别名。
3、安全的容器连接(通过“--icc=false”隔离)。
4、环境变量注入。
下面这个示例首先创建了一个连接到默认网络的容器 container1,然后再创建一个连接到相同网络的容器 container2,但使用“--link container1:c1”选项将其链接到了 container1,并为 container1 指定了别名 c1。然后再绑定到 container2 中使用 container1 的容器名与 container1 进行通信。
$ docker run -itd --name=container1 busybox $ docker run -itd --name=container2 --link container1:c1 busybox $ docker attach container2 # ping -w 3 c1 PING c1 (172.17.0.2): 56 data bytes 64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.090 ms 64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.151 ms 64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.151 ms --- c1 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.090/0.130/0.151 ms / # ^p ^q # 退出 container2 终端 $
同理,如果要在 container1 中使用 container2 的容器名来与 container2 通信,同样需要使用“--link”来进行关联。