Windows 10 build 15063.11, running Windows Subsystem for Linux (WSL) Xenial 16.04.2 LTS.
There's a docker client running in WSL connecting to the Windows Hyper-V daemon. Fun.
The one issue I can't get rid of is the path mapping between WSL and the Hyper-V daemon for volumes - from compose files. Compose files are supposed to be cross platform - they're all relative, and if I start just changing the compose.yml
just to suit my WSL monstrosity, the services won't start anywhere else properly, which isn't entirely practical.
Is there something like export MSYS_NO_PATHCONV=1
that I can do to make WSL stop mutilating the paths before they're sent to the daemon?
Where does this problem need to be solved? In the daemon? In compose? in WSL? where can I contribute?
Volume mappings outside of compose files work wonderfully because you can specify them absolutely, and in the proper format when you pass them to the client/daemon.
e.g., docker run -v c:/my/stuff/is/here:/vars/now/here magicImage
from within WSL works fantastic. It's just compose is getting absolute file names from WSL that are not actually file names e.g., /mnt/c/my/stuff/isnt/here
because in the daemon's Hyper-V universe, /mnt/c/
is nonsense.
follow-up: reached out to docker/compose. docker-compose
calls os.path.abspath
to resolve the absolute paths of the resources, so it seems likely that the issue is more likely in using Microsoft / BashOnWindows.
C:
to/mnt/c
, and the Hyper-V docker daemon mounts the same drive to/c
. One possible workaround is to mount/mnt/c
to/c
in WSL withsudo mount --bind /mnt/c /c
. Hopefully they may eventually change this in docker-for-windows