关于 is not shared from OS X and is not known to Docker.

博客讲述了运行Prometheus时出现Docker挂载路径错误的问题。错误提示路径未从OS X共享且Docker未知。尝试按提示添加共享失败,最终发现原因是运行时未给定绝对路径,指定绝对路径后问题解决。

跑Prometheus时出现了这么一个错误:

docker: Error response from daemon: Mounts denied: The path /prometheus/prometheus.yml is not shared from OS X and is not known to Docker.You can configure shared paths from Docker -> Preferences… -> File Sharing.See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

如下:提示docker来自守护程序的错误响应:已拒绝安装:路径/prometheus/prometheus.yml不是从OS X共享,并且Docker不知道。
在这里插入图片描述

尝试办法:

在这里插入图片描述
按照提示,找到Docker -> Preferences… -> File Sharing.添加Sharing,但是我的路径已经包括在/Users下了,我尝试添加/Users/parkin/prometheus,由于有重叠的部分存在,尝试失败。

解决办法:

我出错的原因:之前在run的时候未给定绝对路径,运行时可能去查找/prometheus目录了,没有找到。虽然在File Sharing中配置过 /Users文件夹共享,凡是该文件夹下的子目录路径都可以共享,但是你必须要告诉它你的父目录是什么,也就是指定绝对路径。

就好比:一个你不认识的小孩子突然跑到你面前叫你阿姨(没给定全路径),你肯定一脸懵,第一反应肯定会拒绝,因为你不知道他是谁,也不知道他为什么叫你阿姨。但是如果他告诉你他是你的朋友XXX的儿子(指定全路径),你不就知道他是谁了吗?

~$ docker run -d -p 9090:9090 --name prometheus -v /Users/parkin/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml

在这里插入图片描述

尝试访问:可以了

在这里插入图片描述
我的问题是出在这。不同的操作可能有不同的问题所在,以上如理解有误,欢迎指正。

<think>好的,我现在需要解决用户的问题:Docker在Mac上挂载路径时出现“Mounts denied: The path ... is not shared from the host”的错误。用户已经提供了几个相关的引用,我需要结合这些信息来给出解决方案。 首先,根据引用[1]和引用[2],错误信息明确指出Docker无法访问宿主机上的指定路径,因为该路径没有被共享给Docker容器。解决方案是需要将该路径添加到Docker的File Sharing设置中。引用[3]中的用户遇到了类似的问题,通过重启容器或重新配置路径解决了问题,这可能涉及到路径权限或配置更新的步骤。 接下来,我需要整理出解决这个问题的步骤。首先,用户需要确认Docker的File Sharing设置中是否包含了要挂载的路径。对于Mac用户,这通常在Docker Desktop的Preferences里设置。添加路径后,可能需要重启Docker服务使配置生效。此外,用户需要注意路径是否存在,如果不存在,Docker可能会自动创建,但根据引用[1],有时候需要手动创建目录以避免问题。 另外,引用[3]提到删除旧容器并重新运行,或者使用prune命令清理终止状态的容器,这可能是因为旧容器仍然占用路径导致新容器无法挂载。因此,在重新运行容器之前,清理旧的容器可能是一个必要的步骤。 还需要考虑权限问题,如果宿主机上的路径权限不足,可能导致Docker无法访问。虽然Mac的文件系统权限可能与Linux不同,但确保Docker有权限访问该路径也是重要的。用户可能需要使用chmod或chown调整权限。 最后,用户可能需要检查路径是否正确,避免拼写错误或路径格式问题。例如,绝对路径的正确性,以及在命令行中是否正确转义了特殊字符。 总结起来,解决步骤应该是:检查并添加路径到Docker的File Sharing,确保路径存在且权限正确,清理旧容器,重启Docker服务,然后重新运行容器命令。如果问题仍然存在,可能需要进一步检查路径配置或查看Docker的日志获取更多信息。</think>### Docker Mac挂载路径问题的解决方案 当在Mac系统使用Docker挂载宿主机目录时,若出现错误提示$Mounts\ denied:\ The\ path\ ...\ is\ not\ shared$[^1][^2][^3],可通过以下步骤解决: --- #### **1. 配置Docker共享路径** - **操作步骤**: 1. 打开Docker Desktop,点击菜单栏的 **Preferences** 2. 进入 **Resources** → **File Sharing** 3. 点击 **+** 添加需要挂载的宿主机目录(如$/\opt/\volume$或$/\data/\db$) 4. 点击 **Apply & Restart** 使配置生效[^1][^3] - **注意**: - 必须添加父目录(如$/\opt/\volume$而非$/\opt/\volume/\test$)[^1] - 若路径不存在,Docker可能自动创建,但建议手动创建目录以避免权限问题 --- #### **2. 清理旧容器残留** 若配置已正确但仍报错,可能是旧容器冲突: ```bash # 强制删除指定容器 docker rm -f <容器ID或名称> # 清理所有终止状态的容器 docker container prune ``` 参考[^3],旧容器可能占用路径资源导致新容器挂载失败。 --- #### **3. 检查路径权限与格式** - **路径权限**:确保Docker对宿主机目录有读写权限,可通过终端调整: ```bash chmod 755 /opt/volume # 示例路径 ``` - **路径格式**:使用绝对路径且避免特殊字符,例如: ```bash # 正确示例 docker run -v /opt/volume/test:/container/path ... # 错误示例(相对路径) docker run -v ./test:/container/path ... ``` --- #### **4. 重启Docker服务** 配置更新后需完全重启Docker: 1. 关闭Docker Desktop 2. 终端执行: ```bash killall Docker && open /Applications/Docker.app ``` --- #### **5. 验证挂载操作** 重新运行容器命令,例如: ```bash docker run -d \ --name test_container \ -v /opt/volume/test:/data \ ubuntu:latest ``` 若挂载成功,容器内$/\data$目录会同步宿主机$/\opt/\volume/\test$的内容[^4]。 --- ### 相关问题 1. **如何查看Docker容器中挂载的卷是否生效?** 使用$docker\ inspect\ <容器ID>$查看$Mounts$字段[^4]。 2. **Docker Desktop的File Sharing支持哪些路径类型?** 仅支持绝对路径,且需位于用户目录或显式配置的共享路径中[^1][^3]。 3. **Mac与Linux下Docker挂载路径有何差异?** Mac通过虚拟机实现,需显式共享路径;Linux直接挂载无需额外配置[^1][^3]。 --- 通过上述步骤,可解决Docker在Mac上因路径未共享导致的挂载错误。若问题持续,建议检查Docker日志或参考官方文档[^1][^3]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值