问题描述:
在虚拟机上安装运行docker,docker运行ubuntu容器,都可以正常进行,虚拟机防火墙是关闭状态,虚拟机可以连接网络(安装docker,pull镜像),在ubuntu容器内,使用命令apt-get update 更新时,无法连上网络
指令docker network inspect bridge
查看网络:
网桥的IP是172.17.0.1,分配了172.17.0.2给容器,ping网桥和容器
可以连上网桥,但是ping不通容器,此时利用brctl show
查看网桥,可以发现:
启动容器之后,bridge id还是8000.0000000000,与启动容器之前没有变化,因此断定是网桥的问题。
问题解决:
docker自动生成的网桥不可用,我们自己重新创建一个新的网桥
先停止docker
service docker stop
添加网桥
brctl addbr br0
添加ip
字段:
ip addr add 172.16.0.1/24 dev br0
启用网桥br0
ip link set dev br0 up
查看网络br0
ifconfig br0
修改docker
默认网桥:
vim /etc/docker/daemon.json
添加字段:"bridge":"br0"
重启docker
systemctl daemon-reload
systemctl start docker
查看网桥信息,可以看到新增的网桥
运行容器,在容器内已经可以联网了
此时在容器外,查看网桥的详细信息
此时容器已经成功挂载到了新增的网桥上,查看网桥信息,bridge id已经发生了改变
博主说问题原因是系统内核的网桥模块bridge.ko
加载失败导致,解决问题的方案是升级内核或升级系统。Centos7 升级内核版参考这篇。
升级完成后,重装Docker
,自定义网桥和容器,成功!不再有网络问题。