Docker 在CentOS上的坑
CentOS马上要退出历史的舞台了,能换Ubuntu就换Ubuntu吧….
为啥我要维护这老CentOS服务器 :(
- CentOS6不能使用docker
- Build出问题(在其他电脑上可以build)。官方源docker版本太低。
- network无法访问。CentOS的内核版本古老,容易出问题。
解决方案
CentOS6早已停止维护,就没啥可说的了。后面两个问题还是可以挽救。2可以通过使用docker-ce源解决。3可以通过更新内核+重启解决。
但是下面还是得额外讲一下问题3的解决办法,更新内核生效需要重启服务器,对于生产环境的服务器并不可以随便重启。
问题3解决方案
特征:使用host模式没有问题(必然)。但是使用bridge模式的network,宿主机不能ping通容器,容器也不能ping通宿主机(因特网就更加不可能),但是同个network下的容器可以互相ping。
如上,这是CentOS的内核版本问题。这里讲述的就是不更新内核修复问题的办法。
重建网卡
因为内核中的网桥模块加载失败,众所周知docker创建bridge模式的network会创建一个网桥(与服务器的网卡NAT转发,相当于共享服务器的网卡上网)。
既然模块坏了,网桥创建也就出了问题(docker仍然会创建网桥,但是那个网桥是有问题的)。因此,就需要手动创建网桥。
安装bridge-utils软件,使用brctl show查看所有网桥。如果网桥后面的interface含有一些虚拟网卡(veth开头)。如下,那就记录下网桥的名称(docker0是docker的默认网桥,不指定network时就会使用)。如果该网桥ID为8000.000000000000则代表该网桥不正常。
停止docker服务,关闭网桥,如:ip link set dev br-xx down
删除网桥: brctl delbr br-xx
新建网桥: brctl addbr br-xx
启用网桥 ip link set dev br-xx up
启动docker服务。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment