修改iptables,导致Docker应用意外停止无法启动问题

1.问题描述:服务器上开启端口时,修改了防火墙规则。重启之后发现docker某些应用意外停止,无法启动。

2.分析问题:首先对防火墙规则进行了修改,影响网络访问、端口开放等。使用 iptables -nvL命令查看各个rules多数据的处理。发现在FORWARD这个chain中对DOCKER这个自定义链处理了数据。然后在查看自定义的docker这个chain发现有的docker应用有正常的package和bytes,但是在8080端口的docker应用却没有。

到此问题已经很明显,我运行了以下命令

iptables -D INPUT -p tcp --dport 8080 -j ACCEPT

要解决问题需要了解下iptables以及与docker的关系,这里直接放链接。里面讲的很清楚。 

  • iptables是什么
  • iptables 与docker关系

2.1 iptables了解推荐:iptables详解

2.2 iptables 与 docker 关系 关系

那么问题如何解决呢?两种方法:

1.重启docker,重新建立docker自定义chain.

systemctl start docker
然后如果应用少或者有选择的重启应用
docker start 应用id

如果应用多,则运行用以下命令两次直接重启所有容器
docker start 'docker ps -a -q'

2.如果不想重启docker,那么久需要手动添加删除的docker自定义chain。

 

 

 

### 修改 Docker Daemon 配置后服务无法启动的排查方法 当修改 `docker daemon` 的配置文件(通常是 `/etc/docker/daemon.json` 或其他路径下的配置文件)之后,如果 Docker 服务无法正常启动,则可能是由于以下几个原因引起的: #### 1. **Iptables 工具未安装** 在某些操作系统上,如果没有正确安装 `iptables` 工具,可能会导致 Docker 启动失败并抛出类似于以下错误消息: ``` Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Iptables not found ``` 此问题可以通过确认系统中是否存在 `iptables` 来解决。如果不存在,可以尝试通过包管理器安装它[^2]。 ```bash sudo apt-get install iptables # 对于基于 Debian 的系统 sudo yum install iptables # 对于基于 RHEL/CentOS 的系统 ``` #### 2. **Daemon 配置文件语法错误** 另一个常见原因是 `daemon.json` 文件中的 JSON 格式不正确。即使是一个多余的逗号或者括号匹配错误也可能导致解析失败。建议使用在线工具验证 JSON 文件的有效性,并确保其结构符合预期。 例如,假设您希望设置镜像加速地址以及指定日志选项,在编辑完成后应保证如下形式无误: ```json { "registry-mirrors": ["https://mirror.example.com"], "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } ``` #### 3. **Insecure Registry 设置不当** 如果您正在运行私有仓库如 Harbor 并启用了 HTTPS 支持,则无需额外参数;但如果仍然采用默认 HTTP 方式连接,则需要显式声明允许非安全注册表访问。这通常涉及向上述提到的 `daemon.json` 添加类似下面的内容[^3]: ```json "insecure-registries" : ["myharborserver:80"] ``` 随后重启 Docker 守护进程使其生效。 #### 4. **Harbor 更新过程中可能影响到的基础架构调整** 对于已经部署好的 Harbor 实例来说,任何对其核心组件 (数据库、存储驱动等) 所做的更改都可能导致依赖关系被破坏从而阻止关联的服务恢复正常工作状态。因此每当计划变更之前最好先按照官方文档指导完成必要的停机维护操作序列[^4]: ```bash $ sudo docker-compose down -v # 停止现有实例并清理卷数据 $ vim harbor.yml # 编辑配置文件做出相应改动 $ sudo prepare # 应用新的设定值至环境变量里去 $ sudo docker-compose up -d # 按照最新定义重新拉起整个集群 ``` 以上步骤能够帮助定位大多数因自定义化而导致的功能障碍现象。 --- ### 总结 综上所述,针对 Docker Service 在调整 Daemon Configuration 后未能成功加载的情况可以从四个方面入手分析:一是核查网络相关基础软件是否完备;二是仔细校验配置文档本身是否有逻辑瑕疵存在;三是考虑特殊场景下比如对接内部容器平台时需不需要特别许可开关开启;最后一点则是遵循标准流程执行升级动作以免意外损坏既有布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值