记录一次docker+k3s+防火墙规则冲突,导致服务无法正常启动的现象。

环境说明

1、openEuler22.03虚拟机,默认启动了firewalld防火墙。

2、该虚拟上部署了某项系统服务,依赖k3s,即k8s的基础简化版。

3、k3s服务的启动,又依赖于docker的启动。

现象

重启虚拟机后,系统的cpu与内存利用率都很低,很明显,各项服务都未正常启动。

手动启动docker服务报错。

bash 复制代码
## 启动docker服务 
systemctl start docker
## docker服务报错
Job for docker.service failed because the control process exited with error code.
## 查看docker服务状态
systemctl status docker
## docker状态如下
× docker.service - Docker Application Container Engine
     Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Sat 2026-01-24 14:28:20 CST; 25s ago
       Docs: https://docs.docker.com
    Process: 30537 ExecStart=/usr/bin/dockerd (code=exited, status=1/FAILURE)
   Main PID: 30537 (code=exited, status=1/FAILURE)

1月 24 14:28:20 AsiaInfo-Endpoint-Security-Protection systemd[1]: docker.service: Scheduled restart job, restart cou>
1月 24 14:28:20 AsiaInfo-Endpoint-Security-Protection systemd[1]: Stopped Docker Application Container Engine.
1月 24 14:28:20 AsiaInfo-Endpoint-Security-Protection systemd[1]: docker.service: Start request repeated too quickly.
1月 24 14:28:20 AsiaInfo-Endpoint-Security-Protection systemd[1]: docker.service: Failed with result 'exit-code'.
1月 24 14:28:20 AsiaInfo-Endpoint-Security-Protection systemd[1]: Failed to start Docker Application Container Engin>

此时k3s服务手动启动,也报错

bash 复制代码
## 启动k3s
systemctl start k3s
## 回显报错
Job for k3s.service failed because the control process exited with error code.
See "systemctl status k3s.service" and "journalctl -xeu k3s.service" for details.
## 查看k3s状态
systemctl status k3s
## 回显如下
● k3s.service - Lightweight Kubernetes
     Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: disabled)
     Active: activating (auto-restart) (Result: exit-code) since Sat 2026-01-24 14:23:06 CST; 1s ago
       Docs: https://k3s.io
    Process: 17108 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service 2>/dev/nu>
    Process: 17111 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)
    Process: 17113 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
    Process: 17115 ExecStart=/usr/local/bin/k3s server --write-kubeconfig /xdrDataLog/linkOneData/persist/kubeconfig>
   Main PID: 17115 (code=exited, status=1/FAILURE)

原因

经一系列排查,发现关闭防火墙后,docker能正常启动,此时查看docker配置文件。

bash 复制代码
## 此处为机器上的docker文件
cat /etc/docker/daemon.json
## 文件内容如下
{
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  },
  "bip": "11.23.45.2/16",
  "data-root": "/xdrDataLog/linkOneData/docker"
}

是因为docker默认设置了自己的桥接网络,配置iptables规则,与firewalld冲突,两个系统都试图管理相同的网络资源,导致冲突。无法启动。

解决方案

ai推荐的解决方案如下,需将所有服务重启后验证,目前未验证。

获取docker信息

防火墙先关闭,将docker运行起来后,查看信息。

bash 复制代码
# 查看接口详情
ip addr show docker0

# 或者
ifconfig docker0

设置新防火墙规则

启动防火墙,设置添加新规则,单独设立docker的区域

bash 复制代码
# 1. 创建新的防火墙区域
sudo firewall-cmd --permanent --new-zone=docker-network

# 2. 设置区域策略
sudo firewall-cmd --permanent --zone=docker-network --set-target=ACCEPT

# 3. 添加docker0接口到该区域
sudo firewall-cmd --permanent --zone=docker-network --add-interface=docker0

# 4. 添加您的Docker网络地址段
sudo firewall-cmd --permanent --zone=docker-network --add-source=11.23.0.0/16

# 5. 允许Docker端口
sudo firewall-cmd --permanent --zone=docker-network --add-port=2375/tcp
sudo firewall-cmd --permanent --zone=docker-network --add-port=2376/tcp

# 6. 重新加载防火墙配置
sudo firewall-cmd --reload

# 7. 验证配置
sudo firewall-cmd --list-all --zone=docker-network

# 8. 重启docker
sudo systemctl restart docker

# 9. 验证Docker状态
sudo systemctl status docker

添加后的规则详情如下:

相关推荐
梦梦代码精1 天前
2026年PHP开源商城系统实测对比:架构、多商户、商用授权,谁才是真·省心?
vue.js·docker·架构·开源·代码规范
鹤落晴春1 天前
【K8s】Pod调度、configMaps
云原生·容器·kubernetes
极客先躯1 天前
高级java每日一道面试题-2026年02月02日-实战篇[Docker]-如何实现容器的持久化存储?
docker·容器·面试宝典·持久化·存储·韵味·java高级面试题
My is 李豆1 天前
CentOS 7 安装 Docker 完整教程(含 docker-compose 插件)
docker·eureka·centos
极客先躯1 天前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷
kong@react1 天前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker
某林2121 天前
Isaac Sim 5.1.0 无头服务器部署与 RTX 显存段错误排障全记录
运维·服务器·docker·容器·isaac
m0_738120721 天前
Docker 环境下 Vulfocus 靶场搭建全流程(附镜像源问题解决方案)
运维·服务器·网络·安全·docker·容器
simeple1 天前
记一次 Docker Compose 项目迁移:从 Windows Docker Desktop 迁移到 CentOS 服务器
docker
哆啦A梦——2 天前
Ubuntu 虚拟机 Docker 与 MySQL 8.0.42 部署指南
mysql·ubuntu·docker