Docker守护进程无法初始化networking控制器

我在启动我的docker守护进程时遇到了麻烦。 我已经安装了docker但是当我尝试运行# systemctl start docker.service它会引发错误。 $ systemctl status docker.service给了我这个:

 ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since Wed 2016-09-21 14:38:24 CEST; 6s ago Docs: https://docs.docker.com Process: 5592 ExecStart=/usr/bin/dockerd -H fd:// (code=exited, status=1/FAILURE) Main PID: 5592 (code=exited, status=1/FAILURE) Sep 21 14:38:24 tp-x230 dockerd[5592]: time="2016-09-21T14:38:24.271068176+02:00" level=warning msg="devmapper: Base device already exists and has filesystem xfs on it. User specified filesystem will be ignored." Sep 21 14:38:24 tp-x230 dockerd[5592]: time="2016-09-21T14:38:24.327814644+02:00" level=info msg="[graphdriver] using prior storage driver \"devicemapper\"" Sep 21 14:38:24 tp-x230 dockerd[5592]: time="2016-09-21T14:38:24.329895994+02:00" level=info msg="Graph migration to content-addressability took 0.00 seconds" Sep 21 14:38:24 tp-x230 dockerd[5592]: time="2016-09-21T14:38:24.330707721+02:00" level=info msg="Loading containers: start." Sep 21 14:38:24 tp-x230 dockerd[5592]: time="2016-09-21T14:38:24.335610867+02:00" level=info msg="Firewalld running: false" Sep 21 14:38:24 tp-x230 dockerd[5592]: time="2016-09-21T14:38:24.461243263+02:00" level=fatal msg="Error starting daemon: Error initializing network controller: Error creating default \"bridge\" network: failed to parse pool request for ad Sep 21 14:38:24 tp-x230 systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE Sep 21 14:38:24 tp-x230 systemd[1]: Failed to start Docker Application Container Engine. Sep 21 14:38:24 tp-x230 systemd[1]: docker.service: Unit entered failed state. Sep 21 14:38:24 tp-x230 systemd[1]: docker.service: Failed with result 'exit-code'. 

相关的行是:

 Sep 21 14:38:24 tp-x230 dockerd[5592]: time="2016-09-21T14:38:24.461243263+02:00" level=fatal msg="Error starting daemon: Error initializing network controller: Error creating default \"bridge\" network: failed to parse pool request for ad 

你的错误文本被切断,所以我不能检查是否是完全相同的错误,但我得到这个错误:

 Error starting daemon: Error initializing network controller: Error creating default "bridge" network: failed to parse pool request for address space "LocalDefault" pool "" subpool "": could not find an available predefined network 

这与具有多个网卡的机器相关(也可以在具有VPN的机器中发生)

对我来说,解决的办法是像这样手动启动docker:

 /usr/bin/docker daemon --debug --bip=192.168.yx/24 

其中192.168.yx是主机IP和/ 24的ip网掩码。 Docker将使用这个networking范围来构build桥梁和防火墙。 –debug并不是真的需要,但是如果有其他的失败可能会有所帮助

一旦开始,你可以杀死docker,照常开始。 AFAIK,docker工具已经为这个–bip创build了一个cachingconfiguration,现在应该没有它。 当然,如果你清理dockercaching,你可能需要再次这样做。

原来,我需要启用Docker试图使用的networking的IP转发,即bridge

这是通过创build带有内容的文件/etc/systemd/network/bridge.network完成的

 [Network] IPFoward=kernel 

然后使用# systemctl restart systemd-networkd.service守护程序。 之后, # systemctl start docker.service工作正常。

PS重新启动networking守护进程后,我断开与networking的连接(正如人们所期望的)并且必须手动连接。 如果你有重要的事情可能值得考虑。