【Docker&NAT】systemctl start docker 启动卡住不动问题的排查处理
一、问题背景在客户处服务器上(CentOS7.6)上用docker部署一个服务,不管是使用docker的二进制包还是直接yum安装,就是死活起不来,执行systemctl start docker 启动卡住不动,另开一个窗口可以看到docker进程。docker ps,docker images等都是卡住,strace发现都是卡住在网络等待,排查docker daemon日志没有发现可疑点或者有异
一、问题背景
在客户处服务器上(CentOS7.6)上用docker部署一个服务,不管是使用docker的二进制包还是直接yum安装,就是死活起不来,执行systemctl start docker 启动卡住不动,另开一个窗口可以看到docker进程。
docker ps,docker images等都是卡住,strace发现都是卡住在网络等待,排查docker daemon日志没有发现可疑点或者有异常日志但随着异常日志排查并没有解决问题,重装docker,重启设备未解决问题。
一度以为是什么操作系统内核版本bug,但是找了一台相同版本的云主机,启动毫无问题。
二、问题排查
找一台docker正常运行的机器进行对比排查,以期能够找到问题点。
正常机器 systemctl status docker 结果如下:
异常机器 systemctl status docker 结果如下:
很显然异常机器多了一条:
/usr/sbin/iptables --wait -t nat -D PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
ps查看,就是iptables卡死(处于D状态):
# ps aux | grep iptables
据此,基本得出是iptables卡住导致docker卡住,这是docker启动过程中要建立iptables策略为后续docker网络做准备,这个过程失败导致卡住。
看上面的意思,nat策略创建夯住了,无法nat,那docker还玩啥!
三、解决方法
iptables不能创建,基本上可以猜测是安全策略导致的,跟操作系统镜像有关,可能做了相关的安全加固。
咨询相关人员解决即可,比如我这里是将/etc/modprobe.d/目录下iptables和nat相关黑名单放开就可以了。
# ll /etc/modprobe.d/
# cat /etc/modprobe.d/blacklist.conf
iptabes卡住,在docker启动日志和调试日志中看不到相关的日志,浪费大量时间排查。
/etc/modprobe.d/ 目录下文件相关功能,需多查看点文档,熟悉一下内核模块加载与屏蔽。
四、参考
安装docker18.09.6后,无法启动
https://www.it610.com/article/1290967739489394688.htm
Linux中升级更新命令yum upgrade和yum update的区别
https://zhidao.baidu.com/question/1436001668988118579.html?qq-pf-to=pcqq.group
systemctl start docker一直卡住排查
https://blog.csdn.net/u012500825/article/details/102924754
Kernel module (简体中文)
https://wiki.archlinux.org/index.php/Kernel_module_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
How do I prevent a kernel module from loading automatically?
https://access.redhat.com/solutions/41278
How to blacklist kernel modules?
https://askubuntu.com/questions/110341/how-to-blacklist-kernel-modules
What is the difference between /etc/modules and /etc/modprobe.d/?
https://askubuntu.com/questions/1024777/what-is-the-difference-between-etc-modules-and-etc-modprobe-d
https://unix.stackexchange.com/questions/75631/excluding-kernel-modules-through-etc-modprobe-d-blacklist-conf-does-not-work
strace命令
https://www.cnblogs.com/duanxz/p/6012768.html
强大的strace命令用法详解
https://blog.csdn.net/cs729298/article/details/81906375
https://www.cnblogs.com/machangwei-8/p/10388883.html
Linux进程照妖镜strace命令
https://zhuanlan.zhihu.com/p/69527356
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)