Docker容器中安装FileMaker Server遇firewalld启动失败求助
问题描述
在Docker 20.10.18容器中安装FileMaker Server 19.5.3时,遇到firewalld配置失败问题,报错如下:
ERROR:dbus.proxies:Introspect error on :1.9:/org/fedoraproject/FirewallD1/config:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Message recipient
disconnected from message bus without replying
Error: The name :1.9 was not provided by any .service files
Open HTTP connection port 80...
Open HTTPS connection port 443...
Open ODBC connection port 2399...
Open Claris FileMaker Server primary machine connection port 5003...
FirewallD is not running
尝试手动安装启动firewalld无效,执行Docker文档推荐的命令也未解决:
firewall-cmd --zone=trusted --remove-interface=docker0 --permanent firewall-cmd --reload
环境信息:
- Linux Ubuntu 20.04.2
- FileMaker Server 19.5.3
- Docker 20.10.18
- 运行于Ubuntu虚拟机
解决提示
1. 放弃在容器内运行firewalld
Docker容器默认缺少完整的systemd/DBus运行环境,而firewalld依赖这些服务才能正常工作,因此在容器内部署firewalld本身就不符合容器轻量化的设计原则,也容易出现各类依赖问题。
2. 改用宿主机防火墙管理端口
Ubuntu 20.04默认使用ufw作为防火墙工具,而非firewalld,之前执行的firewall-cmd命令并不适用。在宿主机上执行以下命令开放所需端口:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 2399/tcp sudo ufw allow 5003/tcp sudo ufw reload
随后启动容器时,将容器内的端口映射到宿主机对应端口:
docker run -d -p 80:80 -p 443:443 -p 2399:2399 -p 5003:5003 [你的容器镜像名称或ID]
3. 容器内网络配置的替代方案(不推荐)
如果必须在容器内处理端口规则,可尝试以下方式,但需注意安全风险:
- 以特权模式启动容器,并直接使用
iptables命令配置端口转发(需容器内安装iptables工具) - 将容器网络模式设置为
host(--network=host),让容器直接使用宿主机网络栈,但会失去容器的网络隔离性
4. 检查宿主机Docker网络兼容性
Docker默认会自动配置宿主机的ufw规则以支持端口映射,无需手动修改docker0接口的zone配置。若之前修改过相关配置,可重置ufw规则后重新启动Docker服务:
sudo ufw reset sudo systemctl restart docker sudo ufw enable
内容的提问来源于stack exchange,提问作者Fleeploed

