docker 启动报错 library initialization failed - unable to allocate file descriptor table - out of memory

发布时间 2023-12-23 20:39:55作者: netcorner

docker 启动报错

library initialization failed - unable to allocate file descriptor table - out of memory

1.报错日志

library initialization failed - unable to allocate file descriptor table - out of memory/cm-server/aiboxCloud-web/boot/entrypoint.sh: line 2: 6 Aborted (core dumped) java -Xms1024m -Xmx2048m -jar -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/cm-server/logs/gc-%t.log -Dfile.encoding=utf-8 -Duser.timezone=GMT+8 -XX:MaxDirectMemorySize=512m .runtime/modular-bpm-runtime.jar

2.原因:

(1) LimitNOFILE=infinity 虽然是不限制,但是在systemctl版本小于234的时候不生效,查看systemctl版本:systemctl --version

(2) docker容器的ulimit太小了,有文档说太大也不行

3.解决方法

#修改/lib/systemd/system/docker.service文件

LimitCORE=infinity

LimitNOFILE=infinity

LimitNPROC=infinity

改成

LimitCORE=65535

LimitNOFILE=65535

LimitNPROC=65535

systemctl daemon-reload

systemctl restart docker

#重启docker服务

 

 

解决方法二

问题
因运存不足无法给进程分配更多的文件句柄数而异常退出

原运行指令
docker run  -d -p 8080:8080 docker-test:v1.0
1
改为
docker run --ulimit nofile=1024 -d -p 8080:8080 docker-test:v1.0

 

 

解决方法三


在 /etc/systemd/system/ 目录下, 创建 docker.service.d 目录
进入该目录,创建一个文件,名为 docker.conf
在文件中加入以下配置:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --default-ulimit nofile=65535:65535 -H fd://