0%

解决Ubuntu Docker启动失败:failed to start daemon: Error initializing network controller: Error creating default "bridge" network

  1. 问题复现
  2. 解决方法

docker - failed to start daemon: Error initializing network controller: Error creating default “bridge” network - Stack Overflow

问题复现

系统启动时发现Docker并没有开启,手动启动Docker时(systemctl start docker),出现如下错误:

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

输入journalctl -fu docker,发现如下报错信息:

1
failed to start daemon: Error initializing network controller: Error creating default "bridge" network: Failed to program NAT chain: INVALID_ZONE: docker

解决方法

大致原因是docker网络接口(interface)设置失败,后来发现是firewall-cmd引起的

1
2
3
$ firewall-cmd --get-active-zones
public
interfaces: enp4s0

可以看到缺少网络接口docker0,执行以下命令添加:

1
2
3
$ firewall-cmd --permanent --new-zone=docker  # 添加新的zone(如果存在可不添加)
$ firewall-cmd --permanent --zone=docker --change-interface=docker0 # 添加接口
$ firewall-cmd --reload # 保存更改

修改后:

1
2
3
4
5
$ firewall-cmd --get-active-zones
docker
interfaces: docker0
public
interfaces: enp4s0

重新启动docker,搞定!