当我尝试使用Docker创建覆盖网络时,出现以下错误:
docker@boot2docker:/vagrant$ docker network create --driver overlay somenetwork
Error response from daemon: failed to parse pool request for address space
"GlobalDefault" pool "" subpool "": cannot find address space GlobalDefault
(most likely the backing datastore is not configured)`
我在GitHub上发现了这个错误报告:https://github.com/docker/docker/issues/18770
我检查了我的Boot2Docker图像,它使用的是sysvinit而不是systemd,所以这不应该是一个问题,而且内核版本看起来也不错:
docker@boot2docker:/vagrant$ uname -r
4.1.19-boot2docker
这是否有可能是滥用覆盖网络概念,我尝试仅在一台主机上运行...?也许这会导致奇怪的错误?
更新 我认为对本地运行的docker守护进程执行网络创建命令是错误的。我想我应该对我的swarm管理器这样做 - 在这种情况下错误消息是不同的:
docker@boot2docker:~$ docker -H tcp://0.0.0.0:3375 network create --driver overlay network
Error response from daemon: No healthy node available in the cluster
当我检查群集群集的状态时,确实没有节点。也许最初的问题是我的swarm join命令不完全正确......?
docker run -d swarm join consul://127.0.0.1:8500/
答案 0 :(得分:1)
如果您通读documentation on overlay networks,您会看到为了创建覆盖网络,首先需要配置Docker用来协调的键/值存储(Docker目前支持etcd,consul和zookeeper)多个主机之间的事情。
来自文档:
要创建覆盖网络,可以在每个Docker Engine上的守护程序上配置选项,以便与覆盖网络一起使用。有三个选项可供选择: 选项说明
--cluster-store=PROVIDER://URL
描述KV服务的位置。
--cluster-advertise=HOST_IP|HOST_IFACE:PORT
用于群集的HOST的IP地址或接口。
--cluster-store-opt=KEY-VALUE OPTIONS
TLS证书或调优发现计时器等选项
从你的问题来看,听起来你没有进行必要的配置。
答案 1 :(得分:0)
正如更新建议..
你的swarm join命令。
docker run swarm join --addr=192.168.196.16:2375 token://`cat swarm_id`
假设您使用令牌创建了swarm。至于我,我宁愿使用静态文件。
您可以在this answer找到所需的一切。