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

Podman环境下启动Pi-hole后Nextcloud容器DNS解析故障排查

问题:Podman Compose部署Pi-hole后Nextcloud无法解析容器域名

用podman-compose部署了Nextcloud、mariadb、redis三个容器,原本Nextcloud能通过容器名(MYSQL_HOST=mariadb、REDIS_HOST=redis)正常连接数据库和缓存服务。但启动Pi-hole容器后,Nextcloud出现数据库连接错误:

Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mariadb failed: Name or service not known

环境信息

  • 平台:Raspberry Pi 5
  • 系统:基于Debian 12的Raspberry Pi OS
  • podman:4.3.1(系统可用最新版)
  • podman-compose:1.0.3(系统可用最新版)
  • Nextcloud:30.0.4
  • Pi-hole:development镜像(当日拉取)

已排查情况

  • 怀疑是Podman 4.3的bug,但未找到相关资料;尝试编译升级到Podman 5.3.1,因依赖问题放弃
  • Docker部署无此问题
  • 切换其他用户运行Pi-hole可恢复正常,但会导致基础设施重复部署
  • 修改系统DNS配置(移除127.0.0.1)后问题仍存在

解决方案

1. 为容器显式指定Podman内置DNS

Podman 4.x的容器DNS解析逻辑和Docker有差异,Pi-hole启动后可能干扰了默认的容器DNS resolver。在podman-compose.yml中给Nextcloud、mariadb、redis容器添加DNS配置,优先使用Podman内置的DNS服务(通常为10.88.0.1,可通过podman network inspect podman确认具体地址):

services:
  nextcloud:
    # 其他配置...
    dns:
      - 10.88.0.1
      - 你的Pi-hole物理IP(可选,用于外部域名解析)
  mariadb:
    # 其他配置...
    dns:
      - 10.88.0.1
  redis:
    # 其他配置...
    dns:
      - 10.88.0.1

2. 统一容器到自定义Podman网络

确保所有容器(包括Pi-hole)处于同一个自定义网络中,避免默认网络的DNS冲突:

  1. 创建自定义网络:
podman network create nextcloud-net
  1. 在podman-compose.yml中为所有容器指定该网络:
networks:
  default:
    external: true
    name: nextcloud-net

容器间的域名解析会通过Podman内置DNS完成,不受Pi-hole的DNS配置影响。

3. 修改Pi-hole的端口监听规则

Pi-hole默认占用53端口,可能抢占了Podman内置DNS的端口。修改Pi-hole容器配置,让其仅监听物理网卡的53端口,不占用Podman虚拟网卡的端口:

services:
  pihole:
    # 其他配置...
    ports:
      - "你的物理网卡IP:53:53/tcp"
      - "你的物理网卡IP:53:53/udp"
      # 保留其他端口映射...

4. 配置Podman dnsmasq强制解析容器域名

编辑Podman的dnsmasq配置文件(路径通常为/etc/containers/dnsmasq.conf),添加容器域名的静态解析规则:

address=/mariadb/你的mariadb容器IP
address=/redis/你的redis容器IP

保存后重启Podman服务:

sudo systemctl restart podman

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:31:10