Docker小记

👽个人博客:https://everspring.github.io/
👽公众号:爱历史的IT男

写这篇的目的也相当于是做一个小笔记,后面有一些典型的问题也会追加进来

问题一:启动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安装新版本

  1. 卸载原来的
yum remove docker \
     docker-client \
     docker-client-latest \
     docker-common \
     docker-latest \
     docker-latest-logrotate \
     docker-logrotate \
     docker-engine
  1. 指定新的源。
  wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo`
  1. 安装。
$ 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即可

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值