无法在 docker 中的主机和容器之间装载卷

Unable to mount volume between host and container in docker

希望你在这些困难时期过得很好。

我是 docker 的新手,我正在尝试通过自定义 index.html 文件来托管一些简单的静态内容,该文件保存在我桌面上名为 'website' 的文件夹中。

我的配置: Ubuntu-20.04 使用 WSL2 和 docker Docker 版本 19.03.13,在 [=37 上构建 4484c46d9d =] 10 家庭单一语言版本 OS 版本 10.0.19042 和内部版本 19042。

我提取了 nginx 的最新映像,但是当我按照 nginx docker 页面上的说明尝试将本地主机卷附加到 nginx 内的 html 文件时,它说

host@HOST:~$ docker run --name website -v /mnt/c/Users/HOST/Desktop/website:usr/share/nginx/html:ro -d -p 8080:80 nginx:latest
docker: Error response from daemon: invalid volume specification: '/run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/<container id>:usr/share/nginx/html:ro': invalid mount config for type "bind": invalid mount path: 'usr/share/nginx/html' mount path must be absolute.
See 'docker run --help'.

我试图解决路径问题,但我找不到图像在我的计算机上的存储位置。我能找到的唯一线索是在 github 论坛中:

\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes

如果我尝试将此路径作为目标容器路径传递,我仍然会收到错误消息。

欢迎提供任何帮助。

-曼尼

在 Windows 上,路径必须使用 Windows-style semantics 命名。您不应在路径前使用前导斜杠。

docker run -v c:\Users\[path]:c:\[containerPath]

这是由于 usr 目录前缺少 / 造成的。这是错误中指出的内容:

host@HOST:~$ docker run --name website -v /mnt/c/Users/HOST/Desktop/website:usr/share/nginx/html:ro -d -p 8080:80 nginx:latest
docker: Error response from daemon: invalid volume specification: '/run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/<container id>:usr/share/nginx/html:ro': invalid mount config for type "bind": invalid mount path: 'usr/share/nginx/html' mount path must be absolute.
See 'docker run --help'.

“类型“bind”的挂载配置无效:挂载路径无效:'usr/share/nginx/html' 挂载路径必须是绝对路径。”

相反,应该是:

docker run --name website -v /mnt/c/Users/HOST/Desktop/website:/usr/share/nginx/html:ro -d -p 8080:80 nginx:latest