Ubuntu 14.04服务器Docker容器启动崩溃问题求助(含Jenkins场景)
我之前维护老版本Ubuntu服务器时也碰到过一模一样的错误,尤其是搭配Jenkins使用Docker的时候。既然你已经通过docker run --rm -i -a stdin -a stdout ubuntu echo 1验证了问题和Dockerfile、Jenkins配置无关,那问题肯定出在Docker本身或者系统底层配置上,给你几个亲测有效的解决方案:
升级到兼容Ubuntu 14.04的Docker版本
Ubuntu 14.04默认仓库里的Docker版本过于老旧,很多新的runtime特性不支持,容易出现这类管道错误。建议卸载旧版本后安装Docker CE 18.06.x系列(这是官方支持Ubuntu 14.04的最后几个稳定版本):# 卸载旧版Docker组件 sudo apt-get remove docker docker-engine docker.io containerd runc # 添加Docker官方源(适配trusty版本) curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu trusty stable" sudo apt-get update # 安装指定兼容版本 sudo apt-get install docker-ce=18.06.3~ce~3-0~trusty检查并升级系统内核
Docker对内核版本有最低要求(至少3.10以上),虽然Ubuntu 14.04默认内核是3.13,但部分定制化服务器的内核可能存在bug。先查看当前内核版本:uname -r如果版本过低或存在已知问题,可以升级到xenial系列的稳定内核:
sudo apt-get install linux-image-generic-lts-xenial sudo reboot重置Docker runtime组件
有时候runc或者containerd这类runtime组件会出现异常,尝试重启Docker服务并重新安装runc:# Ubuntu 14.04用upstart管理服务,重启命令如下: sudo service docker restart # 重新安装runc组件 sudo apt-get install --reinstall runc调整AppArmor安全配置
Ubuntu 14.04默认启用AppArmor,偶尔会和Docker的容器初始化流程冲突。可以临时降低AppArmor对Docker的限制试试:sudo aa-complain docker如果有效,可以修改Docker的默认配置文件
/etc/default/docker,添加以下配置后重启服务:DOCKER_OPTS="--security-opt apparmor:unconfined"
内容的提问来源于stack exchange,提问作者M1ke




