(base) arno@ArnodeMac-mini ~ % docker run -d -p 80:80 -v /app/nghtml:/usr/share/nginx/html --name app03 nginx e60e7738919468ad6df16416e6f6ff53f6deae2904bfeaff450bd9946010f3f0 docker: Error response from daemon: Mounts denied: The path /app/nghtml is not shared from the host and is not known to Docker. You can configure shared paths from Docker -> Preferences... -> Resources -> File Sharing. See https://docs.docker.com/desktop/settings/mac/#file-sharing for more info.
时间: 2025-06-22 15:17:24 浏览: 10
<think>好的,我现在需要帮助用户解决Docker在Mac上运行时遇到的路径共享被拒绝的问题。用户提到的错误信息是“Mounts denied: The path /app/nghtml is not shared from the host”,并且已经给出了一些相关的引用信息。我得先理解这个问题的根本原因,然后逐步指导用户如何解决。
首先,根据引用[1]和[2],问题出在Docker Desktop for Mac的配置上。Docker在Mac上运行实际上是在一个虚拟机环境中,因此宿主机(Mac)的某些目录默认不被Docker共享,需要手动添加。用户试图挂载的路径/app/nghtml没有被包含在Docker的共享目录列表中,导致访问被拒绝。
接下来,我需要按照正确的步骤告诉用户如何配置共享路径。根据引用[1],用户需要打开Docker的Preferences,进入Resources -> File Sharing,然后添加所需的路径。这里可能需要详细说明每一步的操作,比如点击Docker图标,找到设置的位置,添加路径后重启Docker服务等。
同时,用户可能需要确认路径是否存在,因为如果路径不存在,即使添加了也可能导致问题。所以应该提醒用户先检查路径/app/nghtml是否存在,如果不存在的话,先创建该目录。
另外,引用[3]提到需要将特定路径(如/opt/gopath)添加到共享路径中,这说明用户可能在使用某些特定的开发环境或项目结构,需要确保所有相关的路径都被正确共享。因此,在指导用户时,要强调不仅需要添加当前报错的路径,还要检查是否有其他相关路径也需要添加,避免后续出现类似问题。
还有可能涉及到Docker Compose或运行命令时的路径问题。用户可能在docker-compose.yml文件中指定了volumes,或者在使用docker run -v参数时使用了未共享的路径。需要提醒用户在配置这些文件时,确保宿主机路径已经在Docker的File Sharing列表中。
另外,可能需要解释为什么Mac上的Docker需要这样的配置,而Linux系统可能不需要。因为Docker在Linux上直接运行,而在Mac上是通过虚拟机,所以文件系统的访问需要显式配置共享路径。
还要考虑用户可能遇到的权限问题,但根据错误信息,主要问题还是路径未被共享,因此重点应放在配置共享路径上。不过,也可以顺带提及权限问题,比如确保Docker有权限访问该目录,但根据引用内容,这应该不是主要问题。
最后,总结解决步骤:打开Docker设置,添加路径,重启Docker,然后重新运行命令。并提醒用户验证路径是否存在,以及检查其他相关配置如docker-compose.yml中的volume定义是否正确。
在生成相关问题的时候,需要考虑用户可能进一步的问题,比如如何验证配置是否生效,如何处理其他路径问题,Docker Compose的具体配置,以及如何排查其他可能的错误原因。这些都是用户可能会继续提问的方向,提前准备好这些问题可以帮助用户更全面地理解和解决问题。</think>### 解决Docker Mac路径共享被拒绝的问题
#### 问题分析
当Docker在Mac上提示`Mounts denied: The path /app/nghtml is not shared`时,说明Docker无法访问宿主机的指定路径。这是因为Docker Desktop for Mac默认仅允许访问部分目录,其他路径需手动配置为共享路径[^1][^2]。
---
#### 解决步骤
1. **确认路径存在**
在宿主机(Mac)上检查路径`/app/nghtml`是否存在:
```bash
ls /app/nghtml
```
若不存在,需先创建该目录:
```bash
sudo mkdir -p /app/nghtml
```
2. **配置Docker共享路径**
- 打开Docker Desktop,点击菜单栏的🐳图标,选择**Preferences**(或**Settings**)。
- 进入**Resources → File Sharing**。
- 点击**+**按钮,添加`/app/nghtml`到共享路径列表(如图)。
- 点击**Apply & Restart**,重启Docker服务使配置生效。

3. **验证配置**
重新运行Docker命令(如`docker run`或`docker-compose up`),观察是否仍报错。若成功,则共享路径已生效。
---
#### 其他注意事项
- **路径格式问题**
Docker Compose或命令行中指定的路径需与宿主机路径完全一致。例如:
```yaml
volumes:
- /app/nghtml:/container/path
```
- **权限问题**
若路径存在但权限不足,可尝试修改目录权限:
```bash
sudo chmod -R 775 /app/nghtml
```
- **虚拟化环境限制**
Docker Desktop for Mac基于Linux虚拟机运行,因此所有共享路径需显式配置,这与Linux宿主机的直接挂载机制不同。
---
#### 常见问题场景
1. **配置后仍报错**
- 检查是否遗漏了重启Docker服务。
- 确保Docker Compose文件中未使用`~`缩写(如`~/app/nghtml`),需替换为绝对路径`/Users/username/app/nghtml`。
2. **多项目路径管理**
若涉及多个路径(如`/opt/gopath`),需将所有路径添加到File Sharing列表[^3]。
---
阅读全文
相关推荐

















