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

添加后的规则详情如下:

相关推荐
hjxu201641 分钟前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
Stewie121383 小时前
Docker 面试题
运维·docker·容器
vpk1123 小时前
Docker Compose 安装 Redis
redis·docker·容器
last demo5 小时前
Docker-compose和图形界面管理
docker·容器·eureka
好像不对劲7 小时前
【docker】win10 wsl docker不能挂GPU
运维·docker·容器·wsl
江畔何人初8 小时前
Docker、containerd、CRI、shim 之间的关系
运维·docker·云原生·容器·kubernetes
杨浦老苏8 小时前
在线视频播放器YT-DLP Web Player
docker·工具·群晖·下载·多媒体
ALex_zry9 小时前
Docker Compose 配置文件完全指南:从基础到生产级安全实践
服务器·安全·docker
万象.10 小时前
docker镜像仓库
运维·docker·容器
姚不倒10 小时前
Docker 核心原理与运维实战:从入门到生产级理解
运维·docker·架构