背景:客户提供的机器用于部署服务,拿到发现docker是部署好的,但是selinux没有关闭,于是将/etc/selinux/config中的selinux设置成了disabled,但是并未重启,就继续部署服务了;结果几天后客户重启服务器发现docker容器有如下报错,报错内容如下:
Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/e6472f6c7675054284c3a62f6388b52d3d34bd99e492a35113dd5a28b724634f/merged: invalid argument
Error: failed to start containers: nginx
原因分析
网上搜索一下解决方法,千篇一律,都是清除docker 镜像,更换文件系统。由于昨天还能启动容器,想必不是文件系统的问题。其实又是selinux造成的,是把selinux永久关闭导致的。CentOS的selinux是关闭的,而docker上的selinux却是开启的,因此docker运行时会产生如上错误。解决方法
解决方法很简单,修改crntOS下的/etc/selinux/config 将SELINUX=disabled 改成 SELINUX=permissive(宽容模式)保存重启
修改完保存退出(按esc ,输入:wq回车), 重启linux(reboot)即可启动容器。