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

问题描述 投票:0回答:6

我在启动 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
networking docker
6个回答
14
投票

这对我有用,来自 https://github.com/microsoft/WSL/issues/6655

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

sudo dockerd &

11
投票

您的错误文本已被剪切,因此我无法检查它是否完全相同的错误,但我收到了此错误:

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 并重新启动 VPN 或应用以下解决方法)

对我来说,解决方案是像这样手动启动 docker:

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

其中 192.168.y.x 是主机 IP,/24 是 ip 网络掩码。 Docker 将使用此网络范围来构建网桥和防火墙规则。 --debug 并不是真正需要的,但如果其他事情失败可能会有所帮助

启动一次后,就可以杀掉docker并照常启动了。 AFAIK,docker 已经为 --bip 创建了一个缓存配置,现在应该可以在没有它的情况下工作。当然,如果你清理了docker缓存,你可能需要再次执行此操作。


3
投票

显然正在删除

/var/lib/docker/network/files/local-kv.db
在某些情况下可以工作。

来源:https://github.com/moby/moby/issues/18113#issuecomment-161058473

另一种解释可能是使用 VPN 引起的问题:https://github.com/moby/moby/issues/31546#issuecomment-284196714


3
投票

就我而言,发生错误是因为我运行的是 wsl 版本 1 而不是 2

要将 wsl 更新到版本 2,请运行

wsl --set-version <distro name> 2
替换为您要更新的 Linux 发行版的名称。

例如,

wsl --set-version Ubuntu-18.04 2
会将您的 Ubuntu 18.04 发行版设置为使用 WSL 2


2
投票

结果我需要为 Docker 尝试使用的网络(即

bridge
网络)启用 IP 转发。

这是通过创建包含内容的文件

/etc/systemd/network/bridge.network
来完成的

[Network]

IPFoward=kernel

然后使用

systemd-networkd
重新启动
# systemctl restart systemd-networkd.service
守护进程。之后,
# systemctl start docker.service
工作得很好。

附注重新启动网络守护程序后,我与网络断开连接(正如人们所预料的那样),并且必须手动连接。如果您有重要的事情发生,可能值得考虑。


0
投票

我遇到了类似的错误,如下所示:

failed to start daemon: Error initializing network controller: error obtaining controller instance: invalid pools size: 0

通过在 /etc/docker/daemon.json 文件中添加大小,问题得到解决。

来自:

xxx@dev:~$ cat /etc/docker/daemon.json
{
  "bip": "10.0.0.1/24",
  "dns-search": ["xyz.abc.com", "abc.com"],
  "insecure-registries": ["pqr.xyz.abc.com", "localhost:5000"],
  "default-address-pools": [{"base":"10.254.0.0/24"}]
}

xxx@dev:~$ cat /etc/docker/daemon.json
{
  "bip": "10.0.0.1/24",
  "dns-search": ["xyz.abc.com", "abc.com"],
  "insecure-registries": ["pqr.xyz.abc.com", "localhost:5000"],
  "default-address-pools": [{"base":"10.254.0.0/24","size":24}]   <<<<< here
}
© www.soinside.com 2019 - 2024. All rights reserved.