下面是 Docker Windows 10 共享目录挂载失败的解决方案的完整攻略:
问题描述
在使用 Docker for Windows 时,我们可能会遇到一个问题:无法挂载本地共享目录。当我们尝试使用 -v 参数将本地共享目录挂载到 Docker 容器中时,Docker 会报错提示无法挂载路径,可能会像这样:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Mount denied:
The source path "C:/Users/username/Shared" doesn't exist and is not known to Docker.
...
这个错误提示给我们提供了关键线索:Docker 并没有找到共享目录的路径。这是因为 Docker for Windows 使用的是 Hyper-V 虚拟机技术,不能直接访问宿主机的文件系统,需要将共享目录挂载到虚拟机上才能在容器中使用。
解决方案
解决问题的思路是:将本地共享目录挂载到 Hyper-V 虚拟机上,并将虚拟机的挂载点映射到容器中。具体步骤如下:
- 创建本地共享目录并授权
在宿主机上先创建一个共享目录,并授权给管理员帐户。
示例命令:
$ cd C:\Users\username
$ mkdir Shared
$ net share Shared=C:\Users\username\Shared /GRANT:Administrators,full
其中:
- Shared 是共享目录的共享名称。
- C:\Users\username\Shared 是实际的目录路径。
- /GRANT:Administrators,full 表示授权管理员帐户访问并拥有完全控制权限。
- 添加共享文件夹
打开 Hyper-V 管理器,找到 Docker for Windows 的虚拟交换机(一般命名为“vEthernet (DockerNAT)”),并在它的属性对话框中添加共享目录 C:\Users\username\Shared。
示例步骤:
- 打开 Hyper-V 管理器。
- 选择 DockerNAT 虚拟交换机,右键单击选择 “属性”。
- 在 “高级功能” 页面下找到 “共享文件夹” 并点击 “添加”。
- 勾选 “启用此共享文件夹” 并填写路径为 C:\Users\username\Shared。
-
选择 “自动挂载” 并输入分享名称 “Shared”。
-
在 Dockerfile 中使用共享目录
之后在 Dockerfile 中指定挂载点,并在构建镜像时使用 -v 参数将宿主机目录挂载到容器内。
示例 Dockerfile:
FROM ubuntu:latest
RUN mkdir /app
VOLUME /app/shared
其中,VOLUME 指定了镜像中的挂载点。构建镜像时需要使用 -v 参数将宿主机目录 /Users/username/Shared 挂载到容器中:
$ docker build -t myapp .
$ docker run -v /Users/username/Shared:/app/shared myapp
以上就是 Docker Windows 10 共享目录挂载失败的解决方案的攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:docker windows10 共享目录挂载失败的解决方案 - Python技术站