升级Docker Desktop后Docker Compose绑定docker cli提示源路径不存在报错
问题根因
Docker Desktop for Mac v20.10+ 版本调整了默认的文件共享目录白名单,/usr/local/bin 不在默认共享列表内,Docker 底层运行的 Linux 虚拟机无法读取该路径下的软链接,因此触发挂载源不存在的报错。
排查步骤
- 第一步:确认Docker Desktop文件共享配置
打开Docker Desktop偏好设置(Preferences)→ Resources → File Sharing,查看列表中是否包含/usr/local/bin目录,升级后该目录大概率被移出了默认列表。 - 第二步:验证路径访问权限
运行测试命令docker run --rm -v /usr/local/bin/docker:/tmp/docker alpine ls /tmp/docker,如果仍然报路径不存在的错误,即可确认是文件共享配置的问题。
解决方法
方案1:添加共享目录(适配原有配置,改动最小)
- 打开Docker Desktop偏好设置→Resources→File Sharing,点击加号添加
/usr/local/bin目录 - 点击Apply & Restart重启Docker Desktop
- 重新启动容器栈即可,原有配置不需要做任何修改。
方案2:直接挂载二进制实际路径(无需调整Docker配置)
你的软链接实际指向/Applications/Docker.app/Contents/Resources/bin/docker,而/Applications目录默认在Docker Desktop的共享列表内,直接修改.env文件里的变量即可:
DOCKER_BIN_SRC=/Applications/Docker.app/Contents/Resources/bin/docker
修改后直接重启容器即可生效。
方案3:容器内部预装Docker CLI(跨平台兼容性更好)
如果支持修改镜像,直接在镜像的Dockerfile里添加Docker CLI安装步骤,不需要再挂载宿主机的二进制,从根源避免这类宿主机路径适配问题,同时适配不同操作系统的宿主机环境。
内容的提问来源于stack exchange,提问作者Alex Adams
相关产品推荐
相关产品推荐

