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

Docker Pi-hole容器443端口无法访问的排查求助

无法通过HTTPS 443端口访问Pi-hole容器的排查与解决

问题背景

我运行的Pi-hole容器信息如下:

CONTAINER ID   IMAGE                  COMMAND      CREATED       STATUS                    PORTS                                                                                      NAMES
b48f996a91f5   pihole/pihole:latest   "/s6-init"   2 weeks ago   Up 37 minutes (healthy)   0.0.0.0:53->53/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:53->53/udp, 67/udp   pihole

可正常通过http://localhost:80/admin访问管理界面,但https://localhost:443/admin无法访问,且主机防火墙已关闭。为排查端口问题,执行了以下PowerShell命令:

端口监听情况

PS C:\WINDOWS\system32> netstat -ano|findstr 443
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       13364
  TCP    192.168.1.18:1163      190.98.161.73:443      CLOSE_WAIT      7844
  TCP    192.168.1.18:1167      190.98.161.88:443      CLOSE_WAIT      7844
  TCP    192.168.1.18:1169      13.107.246.33:443      CLOSE_WAIT      7844
  TCP    192.168.1.18:1176      23.213.30.115:443      CLOSE_WAIT      7844
  TCP    192.168.1.18:1327      172.64.155.249:443     ESTABLISHED     9044
  TCP    192.168.1.18:1328      151.101.52.193:443     ESTABLISHED     9044
  TCP    192.168.1.18:1350      52.160.70.199:443      TIME_WAIT       0
  TCP    192.168.1.18:6612      20.7.2.167:443         ESTABLISHED     4740
  TCP    [::]:443               [::]:0                 LISTENING       13364
  TCP    [::1]:443              [::]:0                 LISTENING       18644

其中第一行和最后两行是容器启动后新增的,前两行(0.0.0.0:443和[::]:443)由Docker负责端口转发,最后一行[::1]:443由wslhost监听,暂不清楚其作用。

端口关联进程

PS C:\WINDOWS\system32> Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    353      25    26940      35392       6.25  13364  33 com.docker.backend
    147      12     1568       6764       0.14  18644  33 wslhost

问题原因

  1. Pi-hole容器默认无HTTPS服务:官方Pi-hole镜像仅默认开启80端口的HTTP服务,容器内部443端口没有运行任何HTTPS服务,即使主机端口转发到容器443,也没有服务响应请求。
  2. IPv6回环端口被占用:[::1]:443(IPv6本地回环地址)被wslhost进程占用,当通过localhost访问时,系统可能优先使用IPv6地址,导致请求被wslhost拦截,无法转发到Docker容器。

解决方法

方法一:为Pi-hole配置HTTPS(推荐)

Pi-hole本身不内置HTTPS,需手动添加SSL支持:

  • 进入容器:docker exec -it pihole bash
  • 安装web服务器的SSL模块(比如lighttpd-mod-openssl,Pi-hole默认用lighttpd)
  • 生成或导入SSL证书(自签名证书用于测试,正式环境推荐Let's Encrypt证书)
  • 修改lighttpd配置,开启443端口的HTTPS监听

方法二:调整Docker端口映射

避开被占用的443端口,改用其他主机端口转发到容器443:

  • 停止并删除现有容器:
    docker stop pihole
    docker rm pihole
    
  • 重新启动容器,修改端口映射(例如用8443端口):
    docker run -d -p 53:53/tcp -p 53:53/udp -p 80:80/tcp -p 8443:443/tcp --name pihole pihole/pihole:latest
    
  • 之后通过https://localhost:8443/admin访问

方法三:停止占用端口的wslhost进程(谨慎操作)

  • 若确认wslhost未运行必要服务,可结束进程:Stop-Process -Id 18644
  • 注意:wslhost是WSL的核心进程,结束可能导致WSL环境异常,非必要不建议操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:50:55