记一次docker容器迁徙后无法启动的解决

打印 上一主题 下一主题

主题 962|帖子 962|积分 2886

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
故障征象

昨天进行从阿里云服务器(CentOS 7.6)迁徙docker容器到华为云服务器(Huawei Cloud EulerOS),迁徙后容器无法启动,不绝重启。
  1. docker logs --tail=500  容器名称
复制代码
#日志中翻查到报错
  1. library initialization failed - unable to allocate file descriptor table - out of memoryAborted (core dumped)
复制代码
解决方法

#修改docker 设置
  1. sudo vim /etc/systemd/system/docker.service.d/override.conf
复制代码
在设置中增加如下内容
  1. [Service]
  2. ExecStart=
  3. ExecStart=/usr/bin/dockerd --default-ulimit nofile=65530:65530
复制代码
然后检查启动设置是否正常
  1. sudo systemctl edit docker
复制代码
没有问题就重新加载设置并重启docker
  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker
复制代码
原因分析

参照度娘帮我找到的文档,我查看了宿主Linux  和容器 的ulimit值都是65535。
参照解决非常:library initialization failed - unable to allocate file descriptor table - out of memoryAborted_weixin_316529的博客-CSDN博客
   分析,当JDK8启动步伐时会尝试为体系设置的"1073741816"个文件句柄分配内存,由于文件句柄数量非常巨大,就导致了即便分配10G运存还是Out Of Memory。旧版的Linux默认句柄数为1024,则不会出现该非常。
  而我本次业务迁徙了7个容器,无法启动的三个都是容器启动直接运行jar包的,也是JDK8。疑似问题的原因就是这个。
参考文档

Docker -库初始化失败-无法分配文件描述符表-内存不敷 - 问答 - 腾讯云开发者社区-腾讯云
解决非常:library initialization failed - unable to allocate file descriptor table - out of memoryAborted_weixin_316529的博客-CSDN博客docker java library initialization failed - unable to allocate file descriptor table - out of memory_hkNaruto的博客-CSDN博客
[转]深入理解Docker ulimit(docker容器启动报错library initialization failed - unable to allocate file descriptor table - out of memory问题解决) - dirgo - 博客园

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表