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

Portainer Stack通过Docker Compose部署MacVLAN下Pihole报错无法部署

问题排查与解决方法

1. YAML格式缩进错误

YAML语法对缩进要求严格,你提供的Compose文件存在多处缩进不规范问题,这是Portainer部署Stack失败最常见的原因:

  • container_name: pihole属于pihole服务的子属性,需要比上一级的pihole:多2或4个空格缩进
  • image: pihole/pihole:latest同样属于服务子属性,当前缩进不符合规范
    修正后的基础服务结构参考:
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    # 其余属性统一缩进对齐

2. 网络配置不匹配

你此前通过MacVLAN为Pihole分配了独立IP,但当前Compose配置和原有网络逻辑不兼容:

  • 你直接指定networks: docker,没有声明要使用已存在的MacVLAN网络,Portainer会默认尝试新建名为docker的网络,大概率和你预期的网络环境不符
  • 若要沿用之前已经创建好的MacVLAN网络,需要在Compose末尾添加外部网络声明:
networks:
  你此前创建的MacVLAN网络名称:
    external: true
  • 同时需要在pihole服务的网络配置下,指定你要分配给Pihole的静态独立IP,和之前DSM配置的IP保持一致。

3. ServerIP参数配置错误

你当前填写的ServerIP: "0.0.0.0"是无效配置,该参数需要填写你给Pihole分配的MacVLAN静态独立IP,不能填写0.0.0.0。

4. 多余的端口映射冲突

使用MacVLAN网络的容器本身拥有独立IP,所有端口直接暴露在局域网中,不需要再配置ports端口映射,多余的端口映射可能和群晖本机占用的53、80端口冲突,直接删除ports配置段即可。

5. 存储路径权限问题

你配置的卷挂载路径/pihole/pihole/、/pihole/dnsmasq/需要确认在群晖系统中真实存在,并且Docker运行用户拥有对应路径的读写权限,否则挂载失败会触发部署错误。

6. 原有容器冲突

需要先停止并删除你之前在DSM Docker GUI中创建的Pihole容器,否则相同的容器名、IP或者端口占用都会导致新的Stack部署失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:57:00