问题描述
在我们build镜像时,经常会发现一种情况,就是不知道为啥,镜像一直在Restarting/exit,这时通过传统的 docker exec 无法进入容器查看内部情况,那么这种情况如何能进入呢?
问题解决
方案1
亲测有效,但是这种方案会多出一个镜像,如果需要更改镜像内部内容,需要在临时镜像的基础上,继续commit一个新的镜像。所以此方案进行内容修改的话,需要操作步骤较多,不推荐。但是如果仅看镜像内部结构的话,还是比较好的。
docker commit 容器ID tmpTAG
docker exec -it tmpTAG sh
方案2
亲测有效,比较推荐这种方案,可以直接进入原镜像去修改内容,然后重启即可
docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host 镜像hash /bin/sh
上述两种方案均在ubutu环境中进行测试,其他系统需自行测试。看网上其他方案,方案2如果在winows中使用,需要先下载一个镜像并启动(未经过测试),然后在进行方案2中所述步骤
docker run --privileged -it -v /var/run/docker.sock:/var/run/docker.sock jongallant/ubuntu-docker-client
方案3
此中方案仅适合想直接修改docker中容器内容,页比较麻烦,不太推荐
docker cp [容器id]:docker容器中配置文件路径 主机路径
docker cp 主机文件路径 容器id:docker容器中配置文件路径