如何在不使用 docker 机器命令的情况下在 docker 中创建覆盖网络

How can I make an overlay network in docker without using docker-machine commands

Docker 文档解释了如何使用命令

制作覆盖网络
eval $(docker-machine -swarm master)
docker network create -d overlay test-overlay

问题是我没有使用 docker-machine 来设置我的集群。当我尝试创建覆盖网络时出现错误。

在我的 swarm master 上执行的命令(监听端口 4000)

docker -H :4000 network create -d overlay test-overlay

执行命令时出现异常

Error response from daemon: 500 Internal Server Error: failed to parse pool request for address space "GlobalDefault" pool "" subpool "": cannot find address space GlobalDefault (most likely the backing datastore is not configured)

如错误所述,您需要一个后备数据存储。

  • 您至少需要设置一个键值存储,例如consuletcd
  • 如果使用 consul,您需要 运行 您的 docker 守护程序与 --cluster-store consul://<your consul ip>:8500 --cluster-advertise eth0:4000。我假设您使用 eth0 作为 docker 守护程序的网络接口。