Specifically, for Docker on Windows, Virtualbox version, in conjunction with WSL. When I run ‘docker-compose up’, I get this error
ERROR: for 125f20ccead0_lempr_web_1 Cannot start service web: OCI runtime create failed: container_linux.go:348: starting container process caused “process_linux.go:402: container init caused \”rootfs_linux.go:58: mounting \\\”/d/Code/lempr/web/nginx.conf\\\” to rootfs \\\”/mnt/sda1/var/lib/docker/aufs/mnt/065f6aacb3ee01072637ae0544f50a9b772df662ea8e7e3dc2d663d87d7e1a4f\\\” at \\\”/mnt/sda1/var/lib/docker/aufs/mnt/065f6aacb3ee01072637ae0544f50a9b772df662ea8e7e3dc2d663d87d7e1a4f/etc/nginx/nginx.conf\\\” caused \\\”not a directory\\\”\””: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
I checked to make sure nginx.conf exist both outside and inside the container.
Then I tried to map the file to a different location, it gets created as a directory inside the container!
I tried various suggestions from the internet:
- Restart the host machine
- Map /mnt/c to /c
- Share the /c drive to the docker-machine VM inside virtual box
- To do so, open virtualbox
- Select the ‘default’ machine
- Go to settings
- Go to ‘shared folders’
- Click add
- Add C and D as shares
- Attach a console to the machine to make sure the share works
To no avail. Meanwhile the same docker-compose works just fine on my Mac.
So I concluded WSL mapping and docker for Windows’ mapping can’t handle this use case at all and I should switch to a *nix OS for the task.
Windows seems to be unable to handle this setup
Docker-Machine (in Virtualbox) -> Windows -> WSL
It seems there’s a problem with mapping paths from the docker-compose VM to Windows, not a problem with WSL, since trying within Docker’s MINGW command line yields the same result as WSL’s.