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://
- initialization descriptor allocate library dockerinitialization descriptor allocate library initialization memoryaborte descriptor allocate initialization installed library ocidll descriptor descriptors descriptor device error read descriptor sqlgetdata microsoft operation 39 datetime descriptor typeerror descriptors connecting supported upstream descriptor过程vulkan