关于 Mac Docker Desktop使用说明
点击展开更新日志
2025
05-31
文章出现了!
nexttime
会有些什么呢(❁´◡`❁)
¶源起
在使用 Mac 版 Docker Desktop 的过程中遇到几个问题,折腾了好久,虽然中途几次想要换到了 Linux 环境跑 Docker,但最终还是硬挺着用了 Docker Desktop,顺便把遇到的几个问题简要记录。
¶问题
¶部署 AdguardHome 53 端口冲突
- 现象:容器/实机部署
AdguardHome
时提示 53 端口被占用,使用sudo lsof -i :53
看到存在进程mDNSresponder
占用该端口,杀死后会自动重启 - 原因:开启了 Docker Desktop 配置中的
Use kernel networking for UDP
。关闭即可,位置在【设置】-【Resources】-【Network】下面。
¶容器 AdguardHome 客户端地址异常
-
现象:容器部署 AdGuardHome 后,修改客户端DNS服务器后,后台看到的请求地址都是
192.168.65.1
,不是客户端实际地址。 -
原因:局域网所有设备访问 AGH 都需要经过宿主机 Docker 网卡,默认网段为
192.168.65.0/24
,配置位置和上面一致。即使修改容器部署网络为host
也无法解决,修改 Desktop 中子网为局域网子网不确定是否可行(没试)。最终建议是直接实机部署:1
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
安装位置:
/Applications/AdGuardHome
,执行该目录下主程序进行启停或卸载。另外,关于配置中
http.address
管理页面监听地址,可以用0.0.0.0:3000
,或使用127.0.0.1:3000
搭配反向代理。
¶反向代理工具选择
我个人还是很推荐优先使用 Nginx Proxy Manager
的,配置代理及 SSL 都很方便,但是,考虑到我在宿主机上部署了近20个反向代理应用,使用容器部署不能直接使用 127.0.0.1
指定代理地址,后续迁移可能有点麻烦,因此选择了宿主机部署的方式,最终选择了本地编译部署 openresty,并使用 nginxconfig 生成相关配置。
如果使用了 nginxconfig 协助生成了配置,默认已经包含了 websocket,但你有可能会遇到部分应用代理(比如 PVE)返回 504 或这样的报错:
1 | EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "default-src 'self' http: https: data: blob: 'unsafe-inline'". |
原因是因为 nginxconfig 默认配置中 CSP 安全配置导致的,如果遇到这个问题,注释掉 nginx 配置中 include nginxconfig.io/security.conf;
配置后重启试试,大概率是可以解决问题的。这里也顺便提供一个问题排查思路:
- IP 直接访问确保应用后台正常;
- 复制并重新写一个最小化代理配置,参考官网文档建议,验证是否正确;
- 借助 AI 的力量;
- 睡一觉,明日再看,从当局者变成旁观者获取就一目了然了。
关于更加详细的配置可以参考 阮一峰的网络日志-Content Securoty Policy 入门教程
既然都提到了编译部署,贴一下我的编译参数供参考:
1 | ./configure \ |