M1 Mac使用Docker Compose时提示80端口被占用但检测无进程
M1 MacBook Docker容器80端口绑定失败排查方案
启动Docker容器时出现如下错误:
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
但执行sudo lsof -i :80却检测不到进程占用,针对M1芯片Mac的特殊情况,可按以下步骤排查:
停止系统自带Apache服务
M1 Mac默认可能启用了Apache服务占用80端口,执行以下命令关闭并禁用开机启动:sudo apachectl stop sudo apachectl disable检查并调整pf防火墙规则
系统pf防火墙的端口转发规则可能占用80端口,先查看当前nat规则:sudo pfctl -s nat如果发现包含80端口的转发规则,可临时禁用pf测试:
sudo pfctl -d确认问题解决后,再修改
/etc/pf.conf调整规则,避免影响其他服务。排查Docker自身端口冲突
查看所有容器的端口映射配置,包括未运行的容器:docker ps -a --format "{{.Names}}: {{.Ports}}"如果发现有容器已配置80端口映射,可删除该容器或修改其端口映射;也可清理Docker未使用的资源:
docker system prune -f注意:该命令会删除未运行的容器、悬空镜像等,执行前确认无需保留这些资源。
关闭AirPlay接收器(M1专属坑)
M1芯片Mac的AirPlay接收器默认会占用80端口,这是最容易忽略的点。前往系统设置->通用->AirPlay与接力,关闭「AirPlay接收器」选项,然后重启Docker服务即可。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

