gpt4 book ai didi

docker使用docker工具箱从wsl组成空卷(如果是文件夹)挂载

转载 作者:行者123 更新时间:2023-12-02 18:47:45 30 4
gpt4 key购买 nike

我正在运行 docker compose 命令以在 docker 中运行应用程序。但是,yml 中定义的卷是空的。如果我挂载一个文件,它就可以工作。但是,当我从 Windows 挂载目录时,我可以看到该目录,但它是空的。

这是我的 docker-compose 命令。

docker-compose -f docker-compose.dev.yml -f docker-compose.test.yml -f docker-compose.test.local.yml run --rm app /bin/sh

以下是我的 yml 文件的内容:
version: "3"
services:
app:
environment:
- NODE_ENV=test
- TEST_DB_HOSTNAME=database
- DB_HOSTNAME=database
- DB_MIGRATE_ENV=test-docker
volumes:
- .jshintignore:/home/test_app/src/.jshintignore
- .jshintrc:/home/test_app/src/.jshintrc
- ./nuke-rebuild-test-db.js:/home/gofar/src/nuke-rebuild-test-db.js
- ./test_folder:/home/test_app/src/test_folder
- ./database:/home/test_app/src/database
- ./server:/home/test_app/src/server
- ./common:/home/test_app/src/common
- ./coverage:/home/test_app/src/coverage

从上面,nuke-rebuild-test-db.js 文件被复制到容器中。我也可以看到 test_folder。但是,如果我查看文件夹内部,它是空的。

以下是我为使 docker 在我有 docker 工具箱的 Windows 10 Home 系统中工作所做的工作。

下面是将我的 Windows 机器中的 Ubuntu WSL 与 Docker Toolbox 连接起来的配置。
enter image description here

为了使我的根目录与 linux 兼容,我在/etc/wsl.conf 字段中添加了以下内容
[automount]
root = /
options = "metadata"

即使正在装载单个文件,我也已在 Oracle VM Virtual Box 的共享文件夹列表中添加了我的应用程序文件夹。

谢谢。

最佳答案

如果您从中运行 docker-compose 的目录是 WSL/home 目录,则这将不起作用。

您需要有 WSL 文件系统之外的文件,这些文件将映射到 docker 镜像安装的 Windows 共享。默认情况下,docker 工具箱将 windows C 挂载到 boot2docker VM 中的/c。这就是为什么在 WSL 中建议添加/root 自动挂载。因此,您将在/c 中拥有您的 C: 驱动器。但是没有人写 wsl 中的/home 和 windows docker 工具箱中的卷挂载(它使用 docker 的 Virtual Box 镜像)

这里已经讨论了同样的问题:
https://superuser.com/questions/1344407/docker-on-wsl-wont-bind-mount-home/1378927

https://github.com/docker/for-win/issues/2151

关于docker使用docker工具箱从wsl组成空卷(如果是文件夹)挂载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57950861/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com