docker / for-win

Bug reports for Docker Desktop for Windows
https://www.docker.com/products/docker#/windows
1.86k stars 291 forks source link

Crash - Changing data location to larger drive (Using drive space via folder mount point?) #8110

Open GregDomjan opened 4 years ago

GregDomjan commented 4 years ago

Expected behavior

Modified "data-root": to location with more space should be used

Actual behavior

Starting docker with modified "data-root": crashed

Information

Reproducible, new due to configuration change.

In particular, there seems to be some issue relating to the location - a drive mounted to a NTFS folder location rather than being given a separate drive letter. Had been seeing issue with being unable to build images located in same drive space, but moving them out of that space resolved.

unable to prepare context: unable to evaluate symlinks in context path: EvalSymlinks: too many links

Steps to reproduce the behavior

daemon.zip

  1. Mount a drive in an empty folder like c:\data - MS Docs - assign-a-mount-point-folder-path-to-a-drive
  2. Set "data-root": to folder inside the mounted space like "data-root":"C:\\Data\\Docker"
  3. Launch docker desktop
  4. See that Docker folder is created, with tmp and panic.log
tmeckel commented 4 years ago

This not only happens when you set the "data-root" to a disk mounted as a folder, but you simply can't do a docker build in a folder that is mounted as such, regardless if Docker is installed with default settings.

So steps to reproduce:

  1. Mount a drive as folder
  2. Create a folder inside that folder; cd to that folder
  3. Create a Dockerfile. The contents is arbitrary.
  4. Issue docker build -t test .

Version: 2.5.0.0 is affected

docker-robott commented 3 years ago

Issues go stale after 90 days of inactivity. Mark the issue as fresh with /remove-lifecycle stale comment. Stale issues will be closed after an additional 30 days of inactivity.

Prevent issues from auto-closing with an /lifecycle frozen comment.

If this issue is safe to close now please do so.

Send feedback to Docker Community Slack channels #docker-for-mac or #docker-for-windows. /lifecycle stale

GregDomjan commented 3 years ago

/remove-lifecycle stale

GregDomjan commented 3 years ago

Marking things as stale when the Issue has not been addressed at all seems a bit odd

docker-robott commented 3 years ago

Issues go stale after 90 days of inactivity. Mark the issue as fresh with /remove-lifecycle stale comment. Stale issues will be closed after an additional 30 days of inactivity.

Prevent issues from auto-closing with an /lifecycle frozen comment.

If this issue is safe to close now please do so.

Send feedback to Docker Community Slack channels #docker-for-mac or #docker-for-windows. /lifecycle stale

GregDomjan commented 3 years ago

/remove-lifecycle stale

docker-robott commented 3 years ago

Issues go stale after 90 days of inactivity. Mark the issue as fresh with /remove-lifecycle stale comment. Stale issues will be closed after an additional 30 days of inactivity.

Prevent issues from auto-closing with an /lifecycle frozen comment.

If this issue is safe to close now please do so.

Send feedback to Docker Community Slack channels #docker-for-mac or #docker-for-windows. /lifecycle stale

GregDomjan commented 3 years ago

/remove-lifecycle stale

GregDomjan commented 3 years ago

/lifecycle frozen

michha commented 2 years ago

I ran in the same issue. But I can provide a workaround, although a little bit painful.

Lets say we have this setup:

Under normal condition we would call inside C:\sometest\docker a simple docker build -f .\Dockerfile . But we get unable to prepare context: unable to evaluate symlinks in context path: EvalSymlinks: too many links. To get around this error we can convert the handsome path into some windows internal path using PowerShell Core:

(Get-Volume -FriendlyName 'TestDisk').Path

This gives us something like \\?\Volume{012345678-abcd-0123-4567-0123456789ab}\. We use this information to call docker build -f '\\?\Volume{012345678-abcd-0123-4567-0123456789ab}\docker\Dockerfile' '\\?\Volume{012345678-abcd-0123-4567-0123456789ab}\docker\'

Suggestion The docker client should do the same logic to prevent the user from getting evolved to this: