【问题标题】:failed to start daemon: Error initializing network controller: Error creating default "bridge" network无法启动守护进程:初始化网络控制器时出错:创建默认“网桥”网络时出错
【发布时间】:2020-12-09 09:17:39
【问题描述】:

我正在使用Fedora release 33 (Thirty Three) Docker 版本为Docker version 20.10.0, build 7287ab3

首先我运行docker system prune,然后docker daemon 无法启动。

我运行了systemctl start docker 命令并得到了

Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

然后systemctl status docker.service我得到了

● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor pr>
     Active: failed (Result: exit-code) since Wed 2020-12-09 11:10:58 IST; 15s >
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
    Process: 10391 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/contai>
   Main PID: 10391 (code=exited, status=1/FAILURE)

Dec 09 11:10:58 barad-laptop systemd[1]: docker.service: Scheduled restart job,>
Dec 09 11:10:58 barad-laptop systemd[1]: Stopped Docker Application Container E>
Dec 09 11:10:58 barad-laptop systemd[1]: docker.service: Start request repeated>
Dec 09 11:10:58 barad-laptop systemd[1]: docker.service: Failed with result 'ex>
Dec 09 11:10:58 barad-laptop systemd[1]: Failed to start Docker Application Con>

然后sudo dockerd --debug 得到

failed to start daemon: Error initializing network controller: Error creating default "bridge" network: Failed to program NAT chain: ZONE_CONFLICT: 'docker0' already bound to a zone

this Github issue相关

【问题讨论】:

标签: docker docker-compose containers fedora


【解决方案1】:

发现

$ firewall-cmd --get-active-zones
FedoraWorkstation
  interfaces: ens4u1u2 wlp59s0
docker
  interfaces: br-48d7d996793a
libvirt
  interfaces: virbr0
trusted
  interfaces: docker0

接口 docker0 似乎在 trusted 区域中。 但是还有另一个名为 docker 的区域。

所以我决定试一试并将其添加到 docker 区域。

$ sudo firewall-cmd --permanent --zone=docker --change-interface=docker0

之后是这样的:

$ firewall-cmd --get-active-zones
FedoraWorkstation
  interfaces: ens4u1u2 wlp59s0
docker
  interfaces: br-48d7d996793a docker0
libvirt
  interfaces: virbr0

似乎有效。
也许有人可以对此有所了解。

【讨论】:

  • 获取活动区域向我展示了另一个 docker0 绑定的位置。谢谢!
  • 我遇到了这个错误“docker.service: Failed with result 'exit-code'”,这个解决方案也对我有用!
  • 出色的答案。我希望我能两次投票给你。你弄清楚为什么会出现这个问题吗?
  • 在再次检查之前不要忘记sudo firewall-cmd --reload
【解决方案2】:

在我的 Fedora 32 上升级 docker-ce 后出现此错误。看起来新的 docker 与您在答案中链接的the article 中提到的手动防火墙配置冲突。我的机器上有启用容器到容器通信的规则。

我还原防火墙规则后Docker启动成功:

sudo firewall-cmd --permanent --zone=trusted --remove-interface=docker0
sudo firewall-cmd --permanent --zone=FedoraWorkstation --remove-masquerade
sudo firewall-cmd --reload
sudo systemctl restart docker

这些变化似乎不会影响容器相互通信的能力。

【讨论】:

  • 升级到 Fedora 33 后遇到了同样的问题,这个解决方案有效。之后我确实必须重新应用规则才能让 docker 容器再次获得网络访问权限。
  • @Quintesse 感谢您提供的信息。重启后docker服务是否启动成功?它不会在我的 Fedora 32 上启动这些规则中的任何一个。另外,网络访问是什么意思?
  • 我使用了firewall-cmd --permanent --zone=trusted --remove-interface=docker0,它解决了我的问题
【解决方案3】:

遇到类似问题,我从受信任区域中删除了docker0,重新加载防火墙,还从/etc/docker 中删除了daemon.json

sudo firewall-cmd --get-active-zones

sudo firewall-cmd --permanent --zone=trusted --remove-interface=docker0
sudo firewall-cmd --reload

sudo rm -rf /etc/docker/daemon.json # or mv to another location

然后用sudo systemctl restart docker重启docker服务。

【讨论】:

    猜你喜欢
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2018-08-26
    相关资源
    最近更新 更多