`

docker容器故障致无法启动解决实例

 
阅读更多

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

今日内网断电后,有一台机器没有如往常一样起来,该服务器是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快速部署

http://yangrong.blog.51cto.com/6945369/1551327

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

http://yangrong.blog.51cto.com/6945369/1582184

分享到:
评论

相关推荐

    基于微服务和Docker容器技术的PaaS云平台架构设计.docx

    本文档旨在探讨一种高效的云平台建设方法,该方法基于微服务架构和Docker容器技术,旨在为开发团队提供一套完整的服务快速开发、部署、运维管理以及持续集成与持续交付(CI/CD)的解决方案。该PaaS(Platform as a ...

    掌握Docker容器编排:深入探索多种选项

    **Docker Swarm** 是 Docker 平台自带的一种容器编排解决方案,旨在为用户提供简单易用的容器集群管理功能。通过 Swarm,用户可以轻松地将多台物理服务器或虚拟机组合成一个虚拟的 Docker 主机集群。 ##### 示例:...

    企业Docker容器云方案.pptx

    企业Docker容器云方案是一种创新的技术解决方案,旨在解决传统IT架构中的诸多问题,如硬件采购周期长、资源利用率低、运维复杂以及扩容速度慢等。Docker作为一种轻量级的容器技术,因其高性能、快速部署和高稳定性而...

    58同城Docker容器云平台演进.docx

    58同城的Docker容器云平台演进是其IT架构线为解决一系列问题而进行的技术升级。在容器技术应用前,58同城面临了几个主要挑战:一是资源分配不合理,不同业务场景对资源需求差异大,导致资源利用率低下;二是线上服务...

    58同城Docker容器云平台演进.pdf

    【58同城Docker容器云平台演进】的分享展示了58同城如何通过引入Docker容器技术解决资源利用率低、混合部署交叉影响、扩缩容效率低、代码环境不一致以及缺乏稳定测试环境等问题。他们构建了一套私有云平台,以提升...

    基于Kubernetes和Docker技术的企业级容器云平台解决方案.docx

    - **轻量级虚拟化**:Docker容器不模拟硬件,而是基于主机操作系统内核,这使得它们启动快速,占用资源少,相比虚拟机更高效。 - **资源隔离**:每个容器都运行在一个独立的环境中,确保应用之间的隔离,避免了...

    基于Docker Compose构建的MySQL MHA集群.zip

    5. **故障检测与切换**:一旦主节点因某种原因无法提供服务,MHA Manager会检测到并执行预定义的故障切换策略,将一个从节点提升为主节点,同时其他从节点会重新配置以复制新的主节点。 【维护与扩展】 使用Docker ...

    UWB项目Docker部署1

    使用 Docker 镜像可以生成 Docker 容器,Docker 容器是运行 Docker 镜像的实例。UWB 项目 Docker 部署使用了 Docker 容器部署,该部署环境包括云上主机对应的 SSH 地址 10.21.0.16、本机 10.21.128.2 和局域网机器 ...

    docker-20.10_install.tar.gz

    通过 Docker,可以轻松地在单机或集群中部署多个 Zookeeper 实例,实现高可用性和故障恢复。每个 Zookeeper 实例都可以被封装在一个 Docker 容器中,容器之间的网络通信则依赖于 Docker 的网络模型,这正是 iptables...

    基于Docker的更新、扩容与自动容错.pdf

    若发现容器故障,可以立即自动启动新的容器来替换故障容器,从而达到自动容错的目的。 文件【部分内容】中提到的一些关键技术和实践,也是实现上述目标的重要组成部分。例如,提到的“Registrator”是Docker的一个...

    docker swarm 集群故障与异常详解

    本文介绍了docker swarm 集群故障与异常详解,分享给大家,具体如下: 在上次遭遇 docker swarm 集群故障后,我们将 docker 由 17.10.0-ce 升级为最新稳定版 docker 17.12.0-ce 。 前天晚上22:00之后集群中的2个...

    docker-postgres-logging:Postgresql docker容器,用于将查询记录到stdout

    描述中提到的"用于将查询记录到stdout",意味着这个Docker容器内的PostgreSQL实例配置了特殊的日志策略,将通常写入日志文件的查询日志信息重定向到了stdout。这样,通过Docker的logging driver,我们可以方便地收集...

    Docker Swarm 管理资源.rar

    在IT领域,Docker Swarm是Docker公司推出的一款容器编排工具,用于管理和调度Docker容器集群。这个名为"Docker Swarm 管理资源.rar"的压缩包很可能包含了一系列关于如何使用Docker Swarm进行资源管理的教程、文档、...

    docker离线安装包

    服务定义了如何创建和维护一组任务(task),每个任务都是一个运行中的Docker容器实例。服务还支持负载均衡、自动故障恢复和自动扩展,使得在分布式系统中部署和管理应用变得更加简单。 3. Docker Compose: Docker ...

    docker-compose redis主从哨兵 redis多节点高可用 redis集群高可用

    - **网络通信**:Docker容器之间需要能够相互通信,可以通过使用用户自定义网络来实现。 - **持久化**:为了防止数据丢失,应启用Redis的RDB或AOF持久化机制,确保在容器重启后数据仍然可用。 - **安全策略**:虽然...

    基于Docker搭建Redis一主两从三哨兵的实现

    Docker容器运行在Docker引擎上,它们轻量级且独立,使得部署和扩展应用变得极其简单。 接下来,我们进入Redis主从复制的讨论。Redis主从复制是一种数据备份策略,其中一个节点(主节点)负责处理写操作,而其他节点...

    Jenkins docker Kubernetes持续集成(CI)持续部署(CD) (1).png

    使用k8s内置健康检查机制,更快速的发现故障容器并自动恢复,解决以往项目多点部署监控覆盖不全面(自动化)问题; 使用Kubernetes和容器来替代在物理机中运行的KVM 虚机,提高资源利用率,解决虚机创建、迁移、扩...

Global site tag (gtag.js) - Google Analytics