docker默认的网络模式是网桥。按理说docker会自动创建网桥docker0的。不过也有有碰到原生的docker不自动创建网桥,而是启动时报错。本文是docker服务启动不了的处理方法。
could not find an available predefined network
这个报错是因为缺少网桥。默认网桥名字是docker0。只需要创建所需的网桥即可。 以下命令需要root权限。
brctl show
brctl addbr docker0
# 启动网桥
ifconfig docker0 up
# 配置网络地址
ifconfig docker0 192.168.0.0
配置网桥后,重启dockerd就能启动了。
如果想使用不同的网桥名字,比如bridge0,需要在bridge参数里指明。 新版的文件是 /etc/sysconfig/docker,将选项加到$OPTIONS参数里。
--bridge=bridge0
大部分人使用docker都只是在一台机器上做测试,配置网桥容易造成网络问题。个人建议是使用host模式更好,把网桥禁用掉。 以下配置,可以让docker禁用掉网桥,配置的地方同上。
--bridge=none
docker run -itd --net=host xxx
host模式的容器和宿主机共用网络,等于说关闭了网络NameSpace,相比bridge之类的模式,不会损失性能。单机情况下,使用hotst模式已经足够了,也更为灵活。