- 作者:
- 分类:知识&开发->OS->Linux基本
- 阅读:3408
- 点赞:14
- 版权:CC BY-SA 4.0
- 创建:2022-03-23
- 更新:2022-03-23
docker 的虚拟网卡 docker0 没有了 ip 地址,导致 docker 无法使用网络
版权声明:本文为 neucrack 的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接(持续更新):https://neucrack.com/p/416
原文链接(持续更新):https://neucrack.com/p/416
查看 docker bridge 的IP发现没有 IPv4 地址
ifconfig
docker0: flags=4355<UP,BROADCAST,PROMISC,MULTICAST> mtu 1500
ether **:**:**:**:**:** txqueuelen 0 (Ethernet)
RX packets 1219 bytes 36936 (36.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8544 bytes 4236914 (4.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ip addr
docker0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
临时解决方法
检查默认bridge
配置,建议改成默认的172.17.0.1/16
sudo vim /etc/docker/daemon.json
"registry-mirrors": ["http://hub-mirror.c.163.com", "https://registry.docker-cn.com"],
"bip":"172.17.0.1/16"
临时解决方法: 手动增加一个 ip 配置
> sudo ip addr add 172.17.0.1/16 dev docker0
> ip addr
docker0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
再使用 docker 就发现可以使用了
彻底解决方法
- 前面的方法,如果重启 docker 服务发现 ip 又没了
以前是好好的,在一次同事添加多张网卡后就经常出问题, 应该是设置有错, 用systemctl
看了下网络服务,同时有networkd
和NetworkManager
,估计是 docker
创建 docker0
的时候用的是 systemd-networkd
,后来被切换成NetworkManager
,NetworkManager
又没有docker0
的配置信息导致的?于是:
既然用了 NetworkManager
,那干脆就统一用它,去配置它吧,如果是用networkd
,估计重启一下服务就好了(/etc/init.d/network restart
)
用nmcli
工具查看接口信息,发现有接口但是没有建立连接:
> nmcli device show docker0
GENERAL.DEVICE: docker0
GENERAL.TYPE: bridge
GENERAL.HWADDR: 02:42:FA:22:9E:A6
GENERAL.MTU: 1500
GENERAL.STATE: 10 (unmanaged)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
IP6.GATEWAY: --
查看下连接信息,发现确实没有连接信息
> nmcli connection show
NAME UUID TYPE DEVICE
Wired connection 1 ******** ethernet ens5
于是手动创建一条就好了
> sudo nmcli connection add type bridge ifname docker0 con-name docker0 ip4 172.17.0.1/16 autoconnect true
再ip addr
就能看到ip
信息了