有深度用户从Deepin 15.11升级到Deepin V20操作系统后,就出现了Docker容器启动提示exited(139)的问题,在没有升级系统之前是可以正常运行的,如果有类似问题的网友可采用以下方法解决。
原因分析 错误139是由具有内存保护的硬件引起的分段错误,它告诉您您的程序正在试图访问内存的一个限制区域。可能您试图访问只读内存,在代码中的任何地方取消对空指针的引用,或者产生堆栈溢出。这可能与Linux 4.11内核中vsyscall链接的更改有关。 如果Docker镜像中的glibc版本低于2.14版本,在新Linux内核情况下就可能造成分段错误。
Docker安装参考:在深度Deepin v20系统中用阿里云仓库安装Docker的方法。
解决方法 在Deepin V20系统中进入/etc/default/grub,然后修改此命令(空格后添加): grub_cmdline_linux_default=“splash quiet vsyscall=emulate” 注:请在修改前进行文件备份。 然后运行sudo update-grup命令,再重启Deepin V20系统,这时Docker容器应该可以正常运行了。
注意事项 容器正常启动后,进入容器把glibc升级到2.14或以上,然后把grub中vsyscall的修改还原,因为设置为emulate会造成性能损失。
相关主题 |