macOS下Podman部署Pi-hole时53端口占用问题求助
在macOS通过Podman运行Pi-hole时端口53占用问题的解决方法
问题场景
在macOS系统中尝试用Podman容器运行Pi-hole,执行命令如下:
podman machine init podman machine set --rootful=true podman machine start podman run -d --name=pihole --restart always -e TZ=Europe/Zurich -e WEBPASSWORD=admin -e FTLCONF_LOCAL_IPV4=192.168.1.4 -e ServerIP=192.168.1.4 -e PIHOLE_DNS_=1.1.1.1 --cap-add=NET_ADMIN -p 80:80 -p 53:53/tcp -p 53:53/udp -p 443:443 pihole/pihole:latest
运行失败,报错信息:
Error: cannot listen on the TCP port: listen tcp4 :53: bind: address already in use
使用lsof -i :53检测后,未发现进程占用53端口。
解决方法
1. 排查系统级隐藏进程占用
普通用户执行lsof可能无法看到系统进程,改用sudo权限重新检测:
sudo lsof -i :53
如果发现mDNSResponder等系统服务占用端口,可临时停止该服务:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
启动Pi-hole容器后,若需恢复系统DNS服务,执行:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
2. 修改Podman端口映射规则
避免绑定主机所有IP的53端口,改为绑定指定本地IP:
podman run -d --name=pihole --restart always -e TZ=Europe/Zurich -e WEBPASSWORD=admin -e FTLCONF_LOCAL_IPV4=192.168.1.4 -e ServerIP=192.168.1.4 -e PIHOLE_DNS_=1.1.1.1 --cap-add=NET_ADMIN -p 192.168.1.4:80:80 -p 192.168.1.4:53:53/tcp -p 192.168.1.4:53:53/udp -p 192.168.1.4:443:443 pihole/pihole:latest
或者修改主机端口为非53端口(如5353),后续需调整设备DNS指向该端口:
podman run -d --name=pihole --restart always -e TZ=Europe/Zurich -e WEBPASSWORD=admin -e FTLCONF_LOCAL_IPV4=192.168.1.4 -e ServerIP=192.168.1.4 -e PIHOLE_DNS_=1.1.1.1 --cap-add=NET_ADMIN -p 80:80 -p 5353:53/tcp -p 5353:53/udp -p 443:443 pihole/pihole:latest
3. 关闭潜在冲突服务
检查并关闭VPN、AirDrop相关服务或第三方DNS工具,这类服务可能在后台静默占用53端口。
内容的提问来源于stack exchange,提问作者Octavian-Codrut Popescu
相关产品推荐
相关产品推荐

