docker容器因报错无法启动问题的检查及修复容器错误并重启

 更新时间:2023年03月13日 10:10:26   作者:呆萌的代Ma  
随着容器技术的发展,现在很多的应用程序系统都会选择使用docker容器进行部署,下面这篇文章主要给大家介绍了关于docker容器因报错无法启动问题的检查及修复容器错误并重启的相关资料,需要的朋友可以参考下

问题复现

使用:

sudo docker ps -a

查看当前的docker容器:

我们想启动name为【docker-mongo】的这个容器,因此要执行

sudo docker start docker-mongo

但是执行后仍旧没有重启,大概率是重启的时候报错了,查看日志:

sudo docker logs -f docker-mongo

可以看到其中有这样的日志:

{"t":{"$date":"2022-12-29T00:35:32.551+00:00"},"s":"E",  "c":"NETWORK",  "id":23024,   "ctx":"initandlisten",
"msg":"Failed to unlink socket file",
"attr":
	{"path":"/tmp/mongodb-27017.sock",
	"error":"Operation not permitted"
	}
}

查到的解决方法是删除/tmp/mongodb-27017.sock文件即可。但是问题是我们无法启动docker,也无法进入到容器内部,所以就有两种解决方案:

  • 在不启动容器的情况下,进入到容器的目录中,然后对文件做操作
  • 在启动容器且不启动应用的情况下,把容器“夯住”,进入容器内部调试

这里我们使用第一种解决方案

解决方法

首先查看docker的这个容器在硬盘上的目录结构

sudo docker inspect docker-mongo

可以找到一段配置项:

"MergedDir": "/var/lib/docker/overlay2/457e851851b8ef6e1b56ebd89aaefab3133e8e1013adc59a98af72e6e5b93a51/merged",
"UpperDir": "/var/lib/docker/overlay2/457e851851b8ef6e1b56ebd89aaefab3133e8e1013adc59a98af72e6e5b93a51/diff",
"WorkDir": "/var/lib/docker/overlay2/457e851851b8ef6e1b56ebd89aaefab3133e8e1013adc59a98af72e6e5b93a51/work"

这便是容器与本地的地址映射(注意这个目录大概率不会与ID类似,即不会包含“32f8a297fb99”这个字段,因此需要手动查看目录与容器ID的对应关系),所以我们进入这个目录:

cd /var/lib/docker/overlay2/457e851851b8ef6e1b56ebd89aaefab3133e8e1013adc59a98af72e6e5b93a51

然后就可以找到与容器内文件相似的目录结构了,比如我想删除碍事的/tmp/mongodb-27017.sock文件,可以使用:

su # 变为管理员权限
cd /var/lib/docker/overlay2/457e851851b8ef6e1b56ebd89aaefab3133e8e1013adc59a98af72e6e5b93a51/diff
rm mongodb-27017.sock
exit # 退出root用户

这里根据自己的情况对文件进行操作,一般是配置错误导致的docker重启失败

然后就可以重启了:

sudo docker start docker-mongo
sudo docker ps

重启成功!

总结

到此这篇关于docker容器因报错无法启动问题的检查及修复容器错误并重启的文章就介绍到这了,更多相关docker容器因报错无法启动问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker 数据卷权限实例详解

    Docker 数据卷权限实例详解

    这篇文章主要介绍了Docker 数据卷权限实例详解的相关资料,在运行Docker 容器的时候需要添加权限,这里就给大家举例说明如何实现,需要的朋友可以参考下
    2016-11-11
  • Jenkins+Docker实现自动化部署

    Jenkins+Docker实现自动化部署

    本文介绍了在CentOS7和Git(Gitee)环境下如何使用Jenkins进行自动化部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • Docker如何限制容器可用的内存

    Docker如何限制容器可用的内存

    容器的使用过程中,经常需要对容器可以使用的主机资源进行限制,本文介绍如何限制容器可以使用的主机内存,需要的朋友参考下吧
    2017-12-12
  • docker inspect 操作详解

    docker inspect 操作详解

    docker inspect是docker客户端的原生命令,用于查看docker对象的底层基础信息。包括容器的id、创建时间、运行状态、启动参数、目录挂载、网路配置等等。另外,该命令也可以用来查看docker镜像的信息,这篇文章主要介绍了docker inspect 详解,需要的朋友可以参考下
    2023-01-01
  • Docker教程之dockerfile构建centos镜像

    Docker教程之dockerfile构建centos镜像

    这篇文章主要介绍了Docker教程之dockerfile构建centos镜像的相关资料,需要的朋友可以参考下
    2022-11-11
  • docker容器自动退出重启报错问题及解决

    docker容器自动退出重启报错问题及解决

    这篇文章主要介绍了docker容器自动退出重启报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • docker实践之docker-compose部署mysql方式

    docker实践之docker-compose部署mysql方式

    这篇文章主要介绍了docker实践之docker-compose部署mysql方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 在wsl-ubuntu中如何通过 docker 启动 gpu-jupyter

    在wsl-ubuntu中如何通过 docker 启动 gpu-jupyter

    这篇文章主要介绍了在wsl-ubuntu中如何通过 docker 启动 gpu-jupyter,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Docker容器如何配置权限

    Docker容器如何配置权限

    本文介绍了在Docker容器中配置用户和权限的方法,包括在Dockerfile中设置用户和权限,使用dockerrun命令设置用户和权限,以及在DockerCompose文件中设置用户和权限,通过这些方法,可以解决容器内部权限不足的问题
    2024-11-11
  • 三款Docker图形化工具优缺点对比

    三款Docker图形化工具优缺点对比

    大家好,本篇文章主要讲的是三款Docker图形化工具优缺点对比,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01

最新评论