Docker无法运行java虚拟机报错There is insufficient memory for the Java Runtime

文章描述了在导入镜像到Docker后,由于容器内核版本过低导致的启动失败问题。报错信息显示内存不足,但实际上内存资源充足。解决方案是升级runc到1.0.0-rc95,包括关闭所有容器和服务,上传新版本runc文件,备份原有文件,重命名并赋予执行权限,然后重启Docker服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇到镜像导入到docker后无法启动容器的问题,但是上传到别的服务器上面又可以正常启动容器,报错信息大概如下:

There is insufficient memory for the Java Runtime Environment to continue.
Cannot create GC thread. Out of system resources.
An error report file with more information is saved as:

看上去是说服务器资源不足,内存不够,但是执行free -h查看了一下内存并没有不足。

最后知道这个报错是由于docker创建的容器内核版本太低的问题,执行命令查看内核版本:

docker version

如果不是使用root账号,命令需要加上sudo,信息如下:

 操作系统是amd64,其中runc的版本为1.0.0-rc8,需要将其升级为1.0.0-rc95

升级步骤

1.关闭所有docker容器

一定要关闭所有docker容器,再关闭docker服务,不然可能会出现各种问题,如果出现这种情况,按下面的方式解决:

 启动docker报错如下:

linux> Error response from daemon: mkdir /run/containerd/io.containerd.runtime.v1.linux/moby/189aafa489967asdf23664d32f9e33e121a7b3b6e789d8642345678dfg6ebe13cb: file exists: unknown
linux> Error: failed to start containers: xxx容器id

解决方式:

# 执行
linux> ps aux | grep 189aafa489967asdf23664d32f9e33e121a7b3b6e789d8642345678dfg6ebe13cb
# 输出
linux> root      6358  0.0  0.0 108748  4136 ?        Sl   Oct27   1:50 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/189aafa489967asdf23664d32f9e33e121a7b3b6e789d8642345678dfg6ebe13cb -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-nvidia
# kill掉再重新start容器即可
kill 6358

 启动docker报错如下:

Error response from daemon: id already in use

解决方式:

docker stop 容器名称

2.关闭docker服务

#关闭docker服务,可能需要sudo
systemctl stop docker

3.将runc.amd64文件上传到 /usr/bin 目录下

https://download.csdn.net/download/qq_36635569/88067320

4.备份/usr/bin目录下原有的runc文件

cp /usr/bin/runc /备份目录

5.将runc.amd64文件重命名为runc,并赋予执行权限

mv runc.amd64 runc
chmod 777 runc

6.启动docker服务

systemctl start docker

 7.查看docker是否启动成功,执行docker version

runc版本已成功升级 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值