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容器因报错无法启动问题内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何设置docker开机自启动,并设置容器自动重启

    目录 设置docker开机自启动,并设置容器自动重启 设置docker开机启动 设置容器自动重启 docker常用命令 设置docker.容器 自动启动 启动docker 设置docker 自动启动 docker启动容器实例 总结 设置docker开机自启动,并设置容器自动重启 设置docker开机启动 systemctl enable docker 设置容器自动重启 1)创建容器时设置 docker run -d --restart=always --name 设置容器名 使用的镜像 (上面命

  • 解决docker容器重启之后/etc下某些配置文件被重置的问题

    1. /etc/hosts, /etc/resolv.conf和/etc/hostname容器中的这三个文件不存在于镜像,而是存在于于/var/lib/docker/containers/,在启动容器的时候,通过mount的形式将这些文件挂载到容器内部. 因此,如果在容器中修改这些文件的话,修改部分不会存在于容器的top layer,而是直接写入这三个物理文件中. 2.为什么重启后修改内容不存在了? 原因是:每次Docker在启动容器的时候,通过重新构建新的/etc/hosts文件,这又是为什么

  • 解决docker搭建gitlab时容器不停重启的问题

    在我按照gitlab的官方文档搭建后,准备进入容器修改配置文件时,发现进入不了.显示错误时容器正在重启,如下所示 [root@gitlab ~]# docker exec -it gitlab /bin/bash Error response from daemon: Container 9780aafac4ed8366f359418e562c8038017e8a9d5675f34ed3aa6da9d312826b is restarting, wait until the container

  • 解决docker pull镜像报错的问题

    描述: 在win10下安装VM,在VM里运行docker,使用docker pull拉取镜像时报错 一. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 原因: 使用docker pull 命令拉取镜像时,如果不添加额外的信息如docker pull nginx

  • 完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误

    报错信息 最近闲来无事,用python的tkinter库开发了一款带日程提醒的万年历桌面程序.在程序开发结束开始打包时,却发现一直报错 PyInstaller cannot check for assembly dependencies. Please install PyWin32 or pywin32-ctypes. pip install pypiwin32 但是运行pip install pypiwin32时却提示两个库都已经安装过了 可是当再运行打包脚本时就是死活无法打包,就是提示缺少

  • win7下docker安装与报错问题的解决方法

    安装Docker 1.下载docker 首先去官网docker地址去选择下载 2.安装的时候一直next下去,第二部可以改一下安装的路径自定义,后面会提示安装几个插件,同意就好. 3.安装完了出现finish,如果电脑安装过git中途可能报错不管就好. 4.这时候页面出现三个图标点击Docker Quickstart Terminal这个图标 5.可能提示未找到,如果没有弹出是否修复该图标(查找一下对应程序一般在C盘下面),如果实在没有第二方法直接去安装目录下面启动start.sh也是一样的 6

  • eclipse报错 eclipse启动报错解决方法

    报错之一: Version 1.4.2_03 of the JVM not suitable for this product.Version1.5 or geeater is required 大概意思好像说我的JVM虚拟机的环境 1.4版本过低,让我用1.5版本以上的,很疑惑...我安装的jdk是1.7的. 不过jvm是; C:\Documents and Settings\Administrator>java -version java version "1.7.0_07"

  • Docker获取镜像报错docker: Error response from daemon

    今天在使用docker获取镜像时,出现了镜像获取报错的问题,找到了解决的方法记一下. 一.问题 ➜ ~ docker search sameersbn Error response from daemon: Get https://index.docker.io/v1/search?q=sameersbn&n=25: dial tcp: lookup index.docker.io on 192.168.65.1:53: read udp 192.168.65.2:45190->192.16

  • 一次docker登录mysql报错问题的实战记录

    目录 起因 解决方法 附:docker下进入mysql命令行 总结 起因 最近想再重温重温MySQL,于是就打开VMware登上了我的小破机.想着之前在docker上面已经装过MySQL了,就尝试着登录了一下, 进入mysql服务 docker exec -it mysql bash 输入命令 mysql -uroot -p 输入密码 想象的Welcome to the MySQL没有到来,反而是 ???密码明明没有错,登不上去..... 之后打开Navicat,测试远程登录,

  • Spring Boot 2.6.x整合Swagger启动失败报错问题的完美解决办法

    目录 问题 原因 解决方案 方案一(治标) 方案二(治本) 总结 问题 Spring Boot 2.6.x版本引入依赖 springfox-boot-starter (Swagger 3.0) 后,启动容器会报错: Failed to start bean ‘ documentationPluginsBootstrapper ‘ ; nested exception… 原因 Springfox 假设 Spring MVC 的路径匹配策略是 ant-path-matcher,而 Spring Bo

  • IDEA 2021.2 激活教程及启动报错问题解决方法

    关于idea2021最新激活教程,请点击此处,获取最新激活教程 还有一种激活方法,点击此处获取吧 ! 下面看下IDEA 2021.2 启动报错问题解决方法,内容如下所示: 错误信息如下: Plugin 'some.awesome' failed to initialize and will be disabled. Please restart IntelliJ IDEA. java.lang.NullPointerException     at NyanApplicationComponen

  • Springboot项目启动到一半卡住了,不报错问题及解决

    目录 项目启动到一半卡住了,不报错 无法正常启动很慢但也不报错 项目启动到一半卡住了,不报错 今天启动项目时,启动到一半卡住了,不报错,开始我以为是timeout,后来发现不是这个原因. 然后在网上找了很多资料,有些说是日志Jar包递归了,可是我同事本地跑起来却没有错,找了好久的原因,然后我想着重新import下pom.xml,重新部署jar包,果不其然,可以了. 无法正常启动很慢但也不报错 Debug启动缓慢,导致卡住 由于启动断点过多的形式,需在IDEA一下去除断点 以上为个人经验,希望能给

  • Docker Desktop常见的几种启动失败问题解决方法

    目录 报错1,Error:Failed to restart 报错2,Error invoking remote method 'desktop-go-backend':[object Object] 报错3,无错误信息,一直卡在 Docker Desktop starting... 报错4,在Ubuntu for windows 中执行docker命令提示未找到 报错5,LxssManager无法启动,处于停止状态 总结 报错1,Error:Failed to restart 点Quit 然后

随机推荐