【Docker&NAT】systemctl start docker 启动卡住不动问题的排查处理

一、问题背景


在客户处服务器上(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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容