文章目录

  • 服务器重启后Docker服务访问失败
    • 一、 检查服务容器是否启动
      • 如果有容器未启动就启动容器
    • 二、检查是否被防火墙屏蔽
      • 如果端口未开放,有两种情况:
        • 1. 不需要防火墙,直接关掉防火墙服务
        • 2. 需要防火墙,添加需要开放的端口
    • 三、检查路由IP转发是否开启
      • 发现IP转发未开启,解决方案:
        • 开启IP转发,在配置文件添加策略
      • 问题解析:
        • 为什么之前没有手动开启IP转发时`DOCKER`服务依然能正常运行?

服务器重启后Docker服务访问失败

问题描述:

Docker运行的web服务正常运行,配置服务器重启自启动Docker和容器。但是机房断电重启后,web服务无法正常访问。telnet服务器的端口不通。

环境:

Application Version
OS centos7
Docker 19.03.1
docker-compose 1.24.0

一、 检查服务容器是否启动

$ docker-compose ps

发现web服务器与php容器都已正常启动

如果有容器未启动就启动容器
$ docker-composer up -d

重启后,访问web服务是否正常,服务启动可能会需要一些时间,一般能telnet通端口基本就不会有什么问题。

二、检查是否被防火墙屏蔽

服务容器正常启动依然无法访问,就需要检查一下防火墙了,先查看防火墙状态

$ firewall-cmd --state


not running发现防火墙未运行,可以排除防火墙的影响

如果是running则需要进一步排查,端口是否开放

firewall-cmd --list-ports
firewall-cmd --list-services
如果端口未开放,有两种情况:
1. 不需要防火墙,直接关掉防火墙服务
$ sudo systemctl stop firewalld.service
2. 需要防火墙,添加需要开放的端口
$ sudo firewall-cmd --add-port=80/tcp --permanent
$ firewall-cmd --reload

完成后访问web服务看是否正常

三、检查路由IP转发是否开启

前两步的影响排出后,最后检查IP转发是否开启,一般问题出在这里

$ sysctl net.ipv4.ip_forward

发现IP转发未开启,解决方案:
开启IP转发,在配置文件添加策略
$ echo 'net.ipv4.ip_forward = 1' | sudo tee -a /usr/lib/sysctl.d/50-default.conf

重新加载配置文件(也可以重启network服务)

$ sudo sysctl -p /usr/lib/sysctl.d/50-default.conf

查看IP转发是否开启

IP转发已开启,访问web服务看是否正常了。

问题解析:

Docker与宿主机的端口映射是通过iptables实现的,容器启动时会在iptables中添加DOCKER链和nDNAT规则

简单来了解一下,查看一下nat表的DOCKER

$ sudo iptables -t nat -nvL DOCKER

从图中可以看到有两条DNAT规则,这两条规则分别将宿主机44380端口的报文转发到172.17.3.244380端口上,而172.17.3.2是分配给nginx容器的ip(可以通过docker inspect 容器ID命令查看)

而这个DNAT规则需要宿主机开启内核IP转发功能,所以IP转发未开启会导致服务访问失败。

问题的根源找到了,但是产生的原因还没找到。

为什么之前没有手动开启IP转发时DOCKER服务依然能正常运行?

这是因为Docker daemon启动时会检查IP_FORWARD是否开启,如果未开启则临时开启,因为是临时开启所以在network服务重启后就会失效。服务器断电重启后network服务自然会重启,就有可能导致IP_FORWARD失效。一般docker服务正常运行一段时间后却突然访问不了,大不多是因此引起的,可以从这里开始排查。

当然不妨自己来做个试验

  1. 关闭IP转发功能,此时访问web服务失败
  2. 重启docker
$ sudo systemctl restart docker

访问web服务成功,查看IP转发功能是已开启状态。所以docker服务访问失败时往往能够通过重启docker解决,但是不推荐这么做,因为既没真正解决问题容器重启还比较费时。

  1. 重启network
$ sudo systemctl restart network

访问web服务成功,查看IP转发功能是已关闭状态

最后记得将IP转发功能恢复

Docker服务正常运行一段时间后突然无法访问问题排查相关推荐

  1. linux调度不执行,linux crond.d定时调度执行一段时间后不执行

    问题一:/etc/cron.d下的定时任务执行一段时间后不执行 背景:在/etc/cron.d下加了一个定时任务,名为dispute_cron(使用root用户编辑),内容: 28 15 * * * ...

  2. 服务运行一段时间,redis缓存就不可用,原来是这个锅!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:陈凯玲 来源:https://urlify.cn/RVzIR ...

  3. java进程运行一段时间停止_kafka总是在启动一段时间后自动停止

    kafka 总是在启动一段时间后自动关闭,区间大概是 2.3h~3h 之间. kafka server log 没有错误抛出,log 和正常关闭一模一样. kafka-server.log: [201 ...

  4. Spring task定时任务执行一段时间后莫名其妙停止的问题

    前因: 我写了一个小项目,主要功能是用Spring task定时任务每天定时给用户发送邮件.执行了几个月一直没有问题,前几天,莫名其妙的突然不再发送邮件了. 只好花费一些时间来查看到底是什么原因造成的 ...

  5. ssh登录一段时间后断开的解决方案

    ssh登录一段时间后断开的解决方案 参考文章: (1)ssh登录一段时间后断开的解决方案 (2)https://www.cnblogs.com/zhanzq/p/11102869.html 备忘一下.

  6. ili9341屏幕在断电一段时间后首次上电白屏问题

    现象:断开电源一段时间后,首次上电会白屏,然后反复断电上电都能正常显示. 原因:背光灯的打开对lcd的干扰引起的. 解决办法:在背光的开关驱动电路中加入一个小电容,控制mos管的导通摆率控制,故障排除 ...

  7. 加载MNIST报错:[WinError 10060] 由于连接方在一段时间后没有正确答复解决办法(亲测)

    转载:https://blog.csdn.net/landcruiser007/article/details/79346982 tensorflow加载mnist数据集,一些书上和博客中的代码如下: ...

  8. java内存溢出让tomcat停止_java - 使用JVM Open J9一段时间后,应用程序(tomcat)停止响应 - 堆栈内存溢出...

    我正在使用Open J9,一段时间后我的应用程序停止响应..在生产中发生了2个小时后,在本地设法使用JMeter进行模拟. 应用程序(tomcat)只是停止响应,我需要重新启动才能将其取回. 问题是日 ...

  9. mysql 空闲几分钟速度变慢,MYSQL 运作一小段时间后,速度变得奇慢。而CPU基本空闲状态...

    当前位置:我的异常网» MySQL » MYSQL 运作一小段时间后,速度变得奇慢.而CPU基本 MYSQL 运作一小段时间后,速度变得奇慢.而CPU基本空闲状态 www.myexceptions.n ...

最新文章

  1. 给ThinkPad E470C 换个高分屏(1080P)
  2. php简单实例,php实现推荐功能的简单实例
  3. dockerfile构建mysql_Dockerfile在linux上构建mysql8镜像并创建数据库-Go语言中文社区
  4. mac USB串口工具配置
  5. gdb可以查询执行文件的宏, 但是查询不了o文件的宏
  6. 中小学招生强化就近入学;首次全女性太空行走取消;苹果付费新闻APP奔溃;NASA火星上发现鹅卵石;这就是今天的大新闻...
  7. 交换机多少钱一个?影响工业交换机价格的因素?
  8. C和C++的关系, namespace, struct , class
  9. (转)惊魂24小时!真实还原光大“乌龙指”事件,比小说还离奇
  10. 基于 CODING 的 Spring Boot 持续集成项目 1
  11. 化学专业与计算机的联系PPT,计算机在化学中的应用ppt
  12. 2023年重庆邮电大学计算机科学与技术(802)初试经验贴
  13. 在MingW上更新的G ++获取大量错误消息(G++ updated on MingW gets massive error messages)
  14. 【无标题】人工智能的定义
  15. 云虎拜年,好运连连!虎年限定三件套来啦
  16. 【网页制作】CSS尺寸样式属性
  17. c# wifi串口通信_在C#中实现串口通信的方法
  18. 实用!7个强大的Python机器学习库!⛵
  19. excel oracle 可为空,类似excel定位功能用不为空值填充为空列,用sql怎么实现
  20. 商界大忌,你占了几条?

热门文章

  1. 流量监控软件轻松处理异常流量
  2. 新工必看:工作对于你意味着什么
  3. HTML a 标签的 href 属性
  4. Unicode编码范围
  5. 如何把路由器当作交换机来使用?
  6. Vscode :代码缩进forward and backward
  7. [机缘参悟-29]:鬼谷子-内揵篇-与上司交往的五种层次
  8. 悠易科技京东云联合解决方案发布会成功举办
  9. 百度SEO站群Martfury主题英文版 WordPress响应式 商城主题
  10. 人脸识别翼闸使用规范_测温人脸识别闸机翼闸的常规维护保养