docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker进入启动容器查看内部目录结构

docker如何进入启动容器查看内部目录结构

作者:Quincy379

这篇文章主要介绍了docker如何进入启动容器查看内部目录结构问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

docker进入启动容器查看内部目录结构

[root@localhost docker]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
806c175229ce        original:1.0        "/tomcat/bin/catal..."   20 hours ago        Up 5 seconds                8080/tcp            origin-debug
f04275ad9896        newtomcat:1.0       "/root/run.sh"           26 hours ago        Exited (137) 21 hours ago                       newtomcat_3
[root@localhost docker]# docker exec -it 806c /bin/bash

docker exec -it containerID /bin/bash

[root@localhost docker]# docker exec -it 806c /bin/bash

然后:ls

解决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

重启成功!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文