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

添加后的规则详情如下:

相关推荐
万里侯2 小时前
云原生数据备份与恢复:保障数据安全的最佳实践
微服务·容器·k8s
llrraa20102 小时前
配置docker国内镜像源
运维·docker·容器
华为云开发者联盟4 小时前
告别繁琐操作,华为云码道 + Docker重塑远程开发体验
人工智能·学习·docker·华为云·软件开发·华为云码道
m_136874 小时前
Docker Desktop WSL2 启动失败:ext4.vhdx 拒绝访问(E_ACCESSDENIED)完整解决方案
docker
珂玥c4 小时前
k8s集群ingress碎碎念
云原生·容器·kubernetes
米高梅狮子6 小时前
Ceph 分布式存储 部署
linux·运维·数据库·分布式·ceph·docker·华为云
比特森林探险记6 小时前
context 在 gRPC / Gin / K8s 中的实战
容器·kubernetes·gin
米高梅狮子7 小时前
Redis
数据库·redis·mysql·缓存·docker·容器·github
代码熬夜敲Q8 小时前
Docker基础
运维·docker·容器
亚空间仓鼠8 小时前
Docker容器化高可用架构部署方案(十四)
docker·容器·架构