无法启动守护进程:初始化网络控制器时出错:创建默认 "bridge" 网络时出错
failed to start daemon: Error initializing network controller: Error creating default "bridge" network
我正在使用 Fedora release 33 (Thirty Three)
Docker 版本为 Docker version 20.10.0, build 7287ab3
首先我 运行 docker system prune
然后 docker 守护进程无法启动。
我运行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
发现
$ 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
$ sudo firewall-cmd --reload
之后看起来像这样:
$ firewall-cmd --get-active-zones
FedoraWorkstation
interfaces: ens4u1u2 wlp59s0
docker
interfaces: br-48d7d996793a docker0
libvirt
interfaces: virbr0
似乎有效。
也许有人可以对此有更多的了解。
编辑: 添加了 firewall-cmd --reload
如评论中所指出的
我在我的 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
这些更改似乎不会影响容器相互通信的能力。
由于类似的问题,我从信任区域中删除了 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服务。
我正在使用 Fedora release 33 (Thirty Three)
Docker 版本为 Docker version 20.10.0, build 7287ab3
首先我 运行 docker system prune
然后 docker 守护进程无法启动。
我运行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
发现
$ 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
$ sudo firewall-cmd --reload
之后看起来像这样:
$ firewall-cmd --get-active-zones
FedoraWorkstation
interfaces: ens4u1u2 wlp59s0
docker
interfaces: br-48d7d996793a docker0
libvirt
interfaces: virbr0
似乎有效。
也许有人可以对此有更多的了解。
编辑: 添加了 firewall-cmd --reload
如评论中所指出的
我在我的 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
这些更改似乎不会影响容器相互通信的能力。
由于类似的问题,我从信任区域中删除了 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服务。