在前面的小节中,我们没有特别配置,calico 会为自动为网络分配 subnet,当然我们也可以定制。

首先定义一个 IP Pool,比如:

cat << EOF | calicoctl create -f -

- apiVersion: v1

 kind: ipPool

 metadata:

   cidr: 17.2.0.0/16

EOF

用此 IP Pool 创建 calico 网络。

docker network create --driver calico --ipam-driver calico-ipam --subnet=17.2.0.0/16 my_net

此时运行容器将分配到指定 subnet 中的 IP。

当然也可以通过 --ip 为容器指定 IP,但必须在 subnet 范围之内。

至此,我们已经讨论了 Docker 的多种跨主机网络方案,下一节将从多个维度比较各种方案的优缺点。