👽个人博客:https://everspring.github.io/
👽公众号:爱历史的IT男
目录
- 问题一:启动java进程时提示,Cannot create VM thread. Out of system resources
- 问题二:centos下用yum安装的docker版本比较老,想用yum安装新版本
- 问题三:docker pull时出现error pulling image configuration: received unexpected HTTP status: 500 Internal Server Error
- 问题四:yum install docker-ce时遇到以下问题
- 问题五:docker升级后老容器无法启动
- 问题六:删除镜像时提示"Error response from daemon: reference does not exist"
- 问题七:停止docker时有警告Stopping docker.service, but it can still be activated by:docker.socket
写这篇的目的也相当于是做一个小笔记,后面有一些典型的问题也会追加进来
问题一:启动java进程时提示,Cannot create VM thread. Out of system resources
比如
[warning][os,thread] Failed to start thread “VM Thread” - pthread_create failed (EPERM) for attributes: stacksize: 1024k, guardsize: 4k, detached.
Error occurred during initialization of VM
Cannot create VM thread. Out of system resources
处理:可能是docker版本导致的,变更docker版本
问题二:centos下用yum安装的docker版本比较老,想用yum安装新版本
- 卸载原来的
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 指定新的源。
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo`
- 安装。
$ yum install docker-ce -y
$ docker -v
问题三:docker pull时出现error pulling image configuration: received unexpected HTTP status: 500 Internal Server Error
可能docker镜像源导致的,更新镜像源
$ vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"live-restore": true
}
问题四:yum install docker-ce时遇到以下问题
Transaction check error:
file /usr/bin/docker from install of docker-ce-cli-1:25.0.3-1.el7.x86_64 conflicts with file from package docker-common-2:1.13.1-209.git7d71120.el7.centos.x86_64
docker没有卸载干净导致版本冲突,按照问题二那里再卸载一次
问题五:docker升级后老容器无法启动
启动时提示
Error response from daemon: unknown or invalid runtime name: docker-runc
Error: failed to start containers: xxxx
解决方法:进入容器目录中 cd /var/lib/docker/containers/容器id
,更改hostconfig.json
,把内容中的docker-runc
改为runc
,也可用grep -rl 'docker-runc' ./*
搜索含有docker-runc
的文件来修改,然后systemctl restart docker
重启docker服务即可。
问题六:删除镜像时提示"Error response from daemon: reference does not exist"
几年前下载的镜像在执行docker rmi 镜像id -f
时提示Error response from daemon: reference does not exist
。假如镜像名是jenkins/jenkins
解决方法:
$ vim /var/lib/docker/image/overlay2/repositories.json
#注意repositories.json不一定是在overlay2下,可以先搜索,如下
$ grep -rl 'jenkins/jenkins' /var/lib/docker/image
# 找到repositories.json文件中包含镜像名的地方,将对应镜像名的docker.io删除,比如
{
"Repositories": {
"docker.io/jenkins/jenkins": {
"docker.io/jenkins/jenkins:latest": "sha256:30501cbe55caf143f74ab6e8b61807e6031db075933722d16449ed2831e68cf3",
"docker.io/jenkins/jenkins@sha256:f0c26457b40097884b1641be6f8843c5471f2610c513e5c234d67549486b0b2d": "sha256:30501cbe55caf143f74ab6e8b61807e6031db075933722d16449ed2831e68cf3"
}
}
改成
{
"Repositories": {
"/jenkins/jenkins": {
"/jenkins/jenkins:latest": "sha256:30501cbe55caf143f74ab6e8b61807e6031db075933722d16449ed2831e68cf3",
"/jenkins/jenkins@sha256:f0c26457b40097884b1641be6f8843c5471f2610c513e5c234d67549486b0b2d": "sha256:30501cbe55caf143f74ab6e8b61807e6031db075933722d16449ed2831e68cf3"
}
}
注意原来的json文件备份。然后重启docker就可以删除了。重启后可以把json文件中关于镜像的数据删掉
$ systemctl restart docker
$ docker rmi 镜像id
问题七:停止docker时有警告Stopping docker.service, but it can still be activated by:docker.socket
Warning: Stopping docker.service, but it can still be activated by:
docker.socket
**解决方法:**docker有两个进程文件,cd /lib/systemd/system/ && ll|grep docker
可以查看。先停止systemctl stop docker.socket
后再停止systemctl stop docker
即可