Windows 10 Linux子系统中的Dockerfile在当前目录中找不到文件

时间:2019-01-21 04:15:56

标签: docker windows-subsystem-for-linux

我的最后一行是Dockerfile

CMD ["./watch.sh"]

仅运行npm run watch。 在Linux中,一切正常。 但在Linux的Windows 10 Subsytem(WSL)中,docker会抛出一个错误,指出找不到该文件。在运行Dockerfile的另一个python <SOMEFILE.PY>中,它也表示找不到文件。

我已经在/etc/wsl.conf中设置了这些:

[automount]
root = /
options = "metadata"

我在用户名进程中运行了docker,并且已经将我的名字放入了docker组中。因此,我不会以sudo的身份运行它。文件权限也存在于我的帐户中。

编辑: 我只是意识到,似乎我需要以docker的身份运行sudo客户端。 在Bash WSL中,似乎找不到驻留在Windows中的docker引擎,无法通过tcp:// localhost:2375

进行访问
$ sudo usermod -aG docker root
$ sudo docker build -t build-minimal .
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

当我不使用sudo运行docker时,它就可以工作。

1 个答案:

答案 0 :(得分:2)

找到了! 答案是文件权限。

我打算使用WSL是为了拥有完全兼容的Linux环境,但是仍然能够使用Windows。因此,必须正确完成Linux和Windows之间的文件共享。

我以前的错误仅仅是从Linux到我的Windows文件(就是Python Flask应用)的符号链接。不好,因为文件权限无法正确存储/读取。

解决方案:

  • 指向代码/数据目录的符号链接位于Windows文件夹中
  • 如果它是git存储库,请在WSL框中执行git clone
  • 这将使文件权限正确保留,并且您仍然可以从WSL / Windows中完美访问它们