You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker-compose执行airflow-init挂起,容器间无网络连接如何解决

可行解决方案

方案1:修复Docker与nftables兼容性(Arch环境高频触发原因)

Arch Linux 默认使用 nftables 作为防火墙后端,而 Docker 20.10.x 版本默认调用 iptables-legacy 生成规则,二者不兼容会导致桥接网络转发失效,出现容器间通信超时。
操作步骤:

  • 安装iptables-nft包,替换系统默认的iptables后端:
    pacman -S iptables-nft
  • 切换iptables后端为nft:
    update-alternatives --set iptables /usr/bin/iptables-nft
    update-alternatives --set ip6tables /usr/bin/ip6tables-nft
  • 重启Docker服务:
    systemctl restart docker
  • 清理之前的失效容器、网络,重新执行初始化命令:
    docker-compose down -v
    docker-compose up airflow-init

方案2:修改Docker网桥默认网段,避免与宿主机网段冲突

如果宿主机局域网网段是172.17.x.x/16,和Docker默认桥接网段重合,会导致路由转发异常。
操作步骤:

  • 编辑 /etc/docker/daemon.json,添加自定义网段配置:
{
  "bip": "192.168.100.1/24",
  "default-address-pools": [
    {"base":"192.168.101.0/24","size":24}
  ]
}
  • 重启Docker服务:systemctl restart docker
  • 重新执行初始化流程。

方案3:手动指定airflow-init的数据库连接地址为宿主机IP

如果上述网络问题暂时无法定位,可直接绕过容器间通信,用宿主机IP访问postgres服务:
操作步骤:

  • 确认postgres服务已经配置了5432:5432端口映射,且宿主机防火墙开放5432端口
  • 修改docker-compose.yaml中airflow-init服务的环境变量AIRFLOW__DATABASE__SQL_ALCHEMY_CONN,将其中的postgres替换为宿主机的局域网IP,示例:
    postgresql+psycopg2://airflow:airflow@192.168.31.100:5432/airflow
  • 所有依赖数据库的服务(webserver、scheduler、worker等)都同步修改该环境变量
  • 重新执行初始化命令。

内容的提问来源于stack exchange,提问作者maln0ir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 13:54:02