selinux導致docker啟動失敗


1. 問題描述:一向運行正常的一群容器,突然有一天掛掉了,再也起不來,報錯如下

Error response from daemon: devmapper: Error mounting '/dev/mapper/docker-253:0-155266-97eaf4ba0669a6a8f010204b29e0ba923a35e93aa9c47d5bb2c7b14db4c4e619' on '/var/lib/docker/devicemapper/mnt/97eaf4ba0669a6a8f010204b29e0ba923a35e93aa9c47d5bb2c7b14db4c4e619': invalid argument
Error: failed to start containers: gocd-server

2. 問題解決過程

經過谷歌搜索,定位到一篇文章https://github.com/moby/moby/issues/29622,跟selinux有關,但是查看本機的selinux已經是disabled狀態了。

經過尋找蛛絲馬跡發現,在我們裝完一個系統時,當我們的selinux狀態是enforcing的時候,我們做的第一件事可能就是臨時修改為permissive,而修改配置文件為disabled,在docker容器死掉之前發現系統被重啟過一次,懷疑問題原因為重啟前和重啟后selinux狀態不一致導致。

最后關於這個問題得出的結論是:在創建容器的時候selinux狀態為permissive,而重啟后selinux狀態為disabled,導致容器創建時和啟動時selinux上下文不一致,原先正常的容器啟動失敗。解決方法是修改配置文件為permissive,重啟系統。

同時我們忽略了一個問題,permissive是一個中立的狀態,但不代表它沒有自己的態度。

# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM