记录一次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

添加后的规则详情如下:

相关推荐
问简6 小时前
docker 镜像相关
运维·docker·容器
Benszen7 小时前
Docker容器化技术实战指南
运维·docker·容器
Hommy888 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
斯普信云原生组9 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪9 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人10 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
开心码农1号12 小时前
k8s中service和ingress的区别和使用
云原生·容器·kubernetes
L16247612 小时前
Kubernetes 完整学习手册(1 主多从 + 纯 YAML 部署 + 访问原理)
学习·容器·kubernetes
sbjdhjd15 小时前
Docker | 核心概念科普 + 保姆级部署
linux·运维·服务器·docker·云原生·面试·eureka
摇滚侠16 小时前
Vmvare 虚拟机安装 Linux CentOS 7 操作系统 一键安装 Docker 1Panel 一键安装 MySQL Redis OpenClaw
linux·docker·centos