场景:

docker-ce 安装完成,进行配置调整,修改docker启动daemon文件后启动报错:

Docker version 17.03.3-ce  

报错内容:

You specified -b & --bip, mutually exclusive options. Please specify only one

daemon.json 内容如下:

more /etc/docker/daemon.json 
{
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 5,
"bridge": "docker0",
"bip": "10.111.0.1/16",
"fixed-cidr": "10.111.1.0/16",
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"],
"log-driver": "json-file",
"log-opts": {"max-size": "10m","max-file": "5"
}

服务无法启动,报错信息如下:

略 。。。。。。。
You specified -b & --bip, mutually exclusive options. Please specify only one
略 。。。。。。。

错误原因:

配置文件内不能同时指定 网桥 (bridge) 和 网桥的IP(bip)。如果指定网桥,直接用网桥的当前IP地址,不能再设置 IP 地址。

解决办法:

修改解析文件,删除网卡配置项 "bridge": "docker0"
 more /etc/docker/daemon.json 
{
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 5,
"bip": "10.111.0.1/16",
"fixed-cidr": "10.111.1.0/16",
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"],
"log-driver": "json-file",
"log-opts": {"max-size": "10m","max-file": "5"
}
}
再次启动服务可以正常启动。

注意:

也不能同时禁用 iptable 和 icc(容器间通信)。如果禁用 icc,docker 会在宿主机的 iptables 的 FORWARD chain 中添加一条 docker 容器间流量均 DROP 的规则,此时设置 EnableIPTables 为false,也冲突报错,导致服务无法启动。

参考资料:

https://docs.docker.com/engine/reference/commandline/dockerd/#node-discovery
https://blog.csdn.net/zhonglinzhang/article/details/65444579