最近遇到镜像导入到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
文章来源:https://www.toymoban.com/news/detail-808834.html
runc版本已成功升级 文章来源地址https://www.toymoban.com/news/detail-808834.html
到了这里,关于Docker无法运行java虚拟机报错There is insufficient memory for the Java Runtime的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!