博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker容器故障致无法启动解决实例
阅读量:7117 次
发布时间:2019-06-28

本文共 2306 字,大约阅读时间需要 7 分钟。

今日内网断电后,有一台机器没有如往常一样起来,该服务器是docke上的一个容器,然后登录docker宿主机,开始问题分析及解决:

 

一、寻找问题

1、启动iframe-test机器

root@ubuntu:~#docker start iframe-test

iframe-test

2、发现没有容器进程

root@ubuntu:~#docker ps |grep iframe-test

3、查看日志,发现是nginx配置有问题,导致中断。

root@ubuntu:~# docker logs iframe-test

Startingnginx: Starting periodic command scheduler: cron.

nginx:[emerg] unexpected end of file, expecting ";" or "}" in/etc/nginx/nginx.conf:21

nginx:configuration file /etc/nginx/nginx.conf test failed

 

二、思考解决方法

问题原因找到,就是nginx文件检测不通过,导致中断。

解决思路暂有两个:

   方法一:把这个问题容器用docker commit提交到一个新的镜像,然后用docker run -i -d基于新镜像运行一个临时终端进去改变配置文件,然后把临时终端的id提交到一个新的镜像,然后在基于新的镜像重新启动容器。(这个方法步骤多,而且提交了新的镜像,对于后续维护增加了复杂性)

   方法二:直接改变容器里的配置文件,不需要新提交镜像。但是这个容器是宕状态,怎么改呢?下面进行详细说明。在此多谢网友Lingx是供解决思路。

 

三、修改宕机容器配置

所有的容器数据都存在/var/lib/docker/aufs/diff/路径下。下面容器ID目录,以init结尾的是放配置文件的,有/etc/host、reselv.conf,/dev等。另一个是放的文件目录,比如/home/var/及自己安装的服务等等,aufs需要内核3.10以上的支持

 

1、查看容器id

root@ubuntu:~#docker ps -a|grep iframe-test

fa02f8084b63        debian06-base:latest  

 

2、查找nginx.conf配置文件路径

root@ubuntu:~#find / -name 'nginx.conf'

/root/nginx.conf

/var/lib/docker/aufs/diff/7c7b3438586e0653cdca7977a4f889cfdca300f008771462f8a2e6e9d3bc5b84/etc/nginx/nginx.conf

/var/lib/docker/aufs/diff/6bc6a9a5aeb59e19cae8bb78daa481cc465051069c7854528cbfdb3c9c1f2bfb/etc/nginx/nginx.conf

/var/lib/docker/aufs/diff/c7b6b87cfda72701229eebca868eb047aa01c255b62e56ad223dc75396c584e4/etc/nginx/nginx.conf

/var/lib/docker/aufs/diff/fa02f8084b631c371c6c050e5f0315017d327f84746b064246803a6a90a39456/etc/nginx/nginx.conf

 

3、进入对应容器id的目录,修改问题文件

root@ubuntu:cd /var/lib/docker/aufs/diff/fa02f8084b631c371c6c050e5f0315017d327f84746b064246803a6a90a39456

执行ls命令,容器的根目录展现在面前,是不是很熟悉?

root@ubuntu:/var/lib/docker/aufs/diff/fa02f8084b631c371c6c050e5f0315017d327f84746b064246803a6a90a39456#ls

etc  root run  srv  tmp usr  var

接下来找到这个容器里面nginx.conf的语法错误处修改。

 

4、修改后启动容器

root@ubuntu:~# docker start iframe-test

root@ubuntu:~# docker ps |grep iframe-test

fa02f8084b63        debian06-base:latest        "/etc/rc.local"     6 weeks ago         Up 13 minutes       10.18.103.2:22->22/tcp,10.18.103.2:80->80/tcp, 10.18.103.2:443->443/tcp,10.18.103.2:3306->3306/tcp, 10.18.103.2:6379->6379/tcp,10.18.103.2:6381->6381/tcp, 10.18.103.2:8000->8000/tcp,10.18.103.2:8888->8888/tcp                                                                                                                                  iframe-test 

 

容器启动成功,问题解决。以后再也不用担心docker容器坏掉,导致数据丢失了。

我的其它docker相关文章:

运维人员的解放----Docker快速部署

docker容器端口IP规划及端口动态扩容

转载地址:http://llyel.baihongyu.com/

你可能感兴趣的文章
pygame学习笔记(1)——安装及矩形、圆型画图
查看>>
jQuery UI Portlet 1.1.2 发布
查看>>
Intellij Idea @Autowired取消提示
查看>>
继电器是如何成为CPU的
查看>>
零基础 Vue 开发环境搭建 打开运行Vue项目
查看>>
tensorflow 笔记12:函数区别:placeholder,variable,get_variable,参数共享
查看>>
对象图(Object Diagram)—UML图(三)
查看>>
不再联系
查看>>
看板,敏捷的另一种实现方式
查看>>
06 redis中set结构及命令详解
查看>>
跟我一起数据挖掘(19)——什么是数据挖掘(2)
查看>>
10、ASP.NET MVC入门到精通——Model(模型)和验证
查看>>
vscode打造最佳的markdown编辑器
查看>>
weblogic mime-type
查看>>
探讨.net Socket支持在线连接数量
查看>>
GSAP 官方文档(结贴)
查看>>
VC++中遇到的各种数据类型BSTR、LPSTR、LPWSTR、CString、VARIANT、COleVariant 、_variant_t、CComBSTR...
查看>>
background-size background-positon合并的写法
查看>>
android ContentObserver
查看>>
ip_vs实现分析(6)
查看>>