docker / for-mac

Bug reports for Docker Desktop for Mac
https://www.docker.com/products/docker#/mac
2.44k stars 118 forks source link

Changing of Settings -> Advanced -> Disk Image location fails #6797

Open tengelmeier opened 1 year ago

tengelmeier commented 1 year ago

Expected behavior

After changing Settings -> Advanced -> Disk Image location to an external volume, either a.) docker restarts with no disk images or b.) docker moves existing images to the new location and restarts

Actual behavior

Beachball in settings forever, no data copied / moved to the new location (After some hours of beachballing I had a kernel panic / computer shut down, not sure if this is related)

After mac reboot I tried it again with the same result

Information

Output of /Applications/Docker.app/Contents/MacOS/com.docker.diagnose check

Looks like docker is not running while the settings are reapplied

/Applications/Docker.app/Contents/MacOS/com.docker.diagnose check
[2023-04-08T10:04:28.951323000Z][com.docker.diagnose][I] set path configuration to OnHost Starting diagnostics

[PASS] DD0027: is there available disk space on the host? [SKIP] DD0028: is there available VM disk space? [PASS] DD0018: does the host support virtualization? [PASS] DD0001: is the application running? [PASS] DD0017: can a VM be started? [PASS] DD0016: is the LinuxKit VM running? [FAIL] DD0011: are the LinuxKit services running? failed to ping VM diagnosticsd with error: Get "http://ipc/ping": EOF [2023-04-08T10:04:28.984250000Z][com.docker.diagnose][I] ipc.NewClient: f1e501fd-diagnose -> diagnosticd.sock diagnosticsd [2023-04-08T10:04:28.984539000Z][com.docker.diagnose][I] (389bb27e) f1e501fd-diagnose C->S diagnosticsd GET /ping [2023-04-08T10:04:28.985536000Z][com.docker.diagnose][W] (389bb27e) f1e501fd-diagnose C<-S NoResponse GET /ping (975.999µs): Get "http://ipc/ping": EOF

[FAIL] DD0004: is the Docker engine running? Get "http://ipc/docker": EOF [2023-04-08T10:04:28.986583000Z][com.docker.diagnose][I] ipc.NewClient: 05bd6aec-com.docker.diagnose -> lifecycle-server.sock VMDockerdAPI [2023-04-08T10:04:28.986984000Z][com.docker.diagnose][I] (e3fe61e0) 05bd6aec-com.docker.diagnose C->S VMDockerdAPI GET /docker [2023-04-08T10:04:28.988039000Z][com.docker.diagnose][W] (e3fe61e0) 05bd6aec-com.docker.diagnose C<-S NoResponse GET /docker (1.038599ms): Get "http://ipc/docker": EOF [...]

[PASS] DD0015: are the binary symlinks installed? [FAIL] DD0031: does the Docker API work? error during connect: Get "http://docker.raw.sock/v1.24/containers/json?limit=0": EOF [PASS] DD0013: is the $PATH ok? Error response from daemon: Bad response from Docker engine [FAIL] DD0003: is the Docker CLI working? exit status 1 [PASS] DD0038: is the connection to Docker working? [PASS] DD0014: are the backend processes running? [PASS] DD0007: is the backend responding? [PASS] DD0008: is the native API responding? [PASS] DD0009: is the vpnkit API responding? [PASS] DD0010: is the Docker API proxy responding? [SKIP] DD0030: is the image access management authorized? [PASS] DD0033: does the host have Internet access? [PASS] DD0018: does the host support virtualization? [PASS] DD0001: is the application running? [PASS] DD0017: can a VM be started? [PASS] DD0016: is the LinuxKit VM running? [WARN] DD0011: are the LinuxKit services running? failed to ping VM diagnosticsd with error: Get "http://ipc/ping": EOF [WARN] DD0004: is the Docker engine running? Get "http://ipc/docker": EOF [PASS] DD0015: are the binary symlinks installed? [WARN] DD0031: does the Docker API work? error during connect: Get "http://docker.raw.sock/v1.24/containers/json?limit=0": EOF [WARN] DD0032: do Docker networks overlap with host IPs? error during connect: Get "http://docker.raw.sock/v1.24/networks": EOF

Steps to reproduce the behavior

df

beeradmoore commented 1 year ago

Also having this issue on macOS (13.5, docker desktop 4.22.0). When I was looking it up I came across this, which is the same thing happening on Windows.

pre commented 1 year ago

I and my colleague can reproduce the problem. Disk image location cannot be changed (change does not take effect) in MacOS 13.5.2 Docker Desktop v4.24.0.

Setting a new Disk Image Location in Docker Desktop settings will create an empty folder. The VM image stays in the default location. When Docker Desktop is restarted, the path in Disk Image Location is reverted back to the default path (where the VM image always existed).

TL;DR The Disk Image is never created in the changed location.

bsousaa commented 1 year ago

@pre can you share a diagnostics id to help us troubleshooting?

aom commented 1 year ago

@bsousaa I can reproduce the issue with fresh installation of Docker Desktop v4.24.0 on macOS 13.6 (22G120).

I submitted a diagnostic id via Docker Support.

bsousaa commented 1 year ago

@aom can you share the id in this thread?

aom commented 1 year ago

Sorry but I'll rather send it via official channels as I did because it contains a lot of information about the running environment.

bsousaa commented 1 year ago

it's an id to access data through internal tooling. This is an official channel. But sure, feel free to go through Docker Support if you are eligible.

aom commented 1 year ago

I would be totally ok with a workaround myself. Some windows users report being able to change the location by changing it in settings.json while Docker Desktop is not running.

But settings.json is not where it is supposed to be according to docs: https://docs.docker.com/desktop/settings/mac/

❯ cat ~/Library/Group Containers/group.com.docker/settings.json
cat: /Users/<username>/Library/Group: No such file or directory
cat: Containers/group.com.docker/settings.json: No such file or directory
pre commented 1 year ago

@bsousaa My diagnostics id is 00539E12-746B-4AED-89AB-104EE079BDB6/20231003102556

Notice that in this case the local directory has already been reverted by Docker Desktop.

MihaelaStoica commented 1 year ago

I would be totally ok with a workaround myself. Some windows users report being able to change the location by changing it in settings.json while Docker Desktop is not running.

But settings.json is not where it is supposed to be according to docs: https://docs.docker.com/desktop/settings/mac/

❯ cat ~/Library/Group Containers/group.com.docker/settings.json
cat: /Users/<username>/Library/Group: No such file or directory
cat: Containers/group.com.docker/settings.json: No such file or directory

@aom please try cat ~/Library/"Group Containers"/group.com.docker/settings.json

creechy commented 1 year ago

I'm having a similar problem. When I attempt to change the Disk Image Location, I can see that there is a "Docker Desktop" folder created under the folder I choose, but it never gets used, and when I go back and look at Disk Image Location it is reverted back to the original location.

pre commented 1 year ago

I'm having a similar problem. When I attempt to change the Disk Image Location, I can see that there is a "Docker Desktop" folder created under the folder I choose, but it never gets used, and when I go back and look at Disk Image Location it is reverted back to the original location.

This is exactly what happens. Yes!

nothing2obvi commented 11 months ago

Anyone find a solution to this? Experiencing this issue with Docker 4.26.1.

curiouscod3 commented 10 months ago

[DockerDesktop 4.26.1]

Cannot change Disk Image Location! Self-Diagnose says "No fatal errors detected." everything has passed. I even tried this experiment several times. Cannot change the disk image location through the setting Cannot change docker.raw location.

Once I changed the location, settings.json(group.com.docker) has been moved back to its original location directory. and old conatiners/images have gone ! This is really weird.

I followed the official help link(https://docs.docker.com/desktop/faqs/macfaqs/#how-do-i-move-the-file-to-a-bigger-drive )

hut8 commented 9 months ago

This is pretty irritating... here's a gist of some relevant logs:

https://gist.github.com/hut8/2a3964a2a26743f882091613dfd88861

Trying to move it to /Volumes/Liam/Docker/DockerDesktop:

default 12:08:20.366807-0500 com.docker.backend callback failed on restart: failed to rename VM disk: rename /Library/Containers/com.docker.docker/Data/vms/0/data /Volumes/Liam/Docker/DockerDesktop: file exists

hut8 commented 9 months ago

Alright so I found a workaround:

  1. Close docker desktop completely, ensuring that the engine isn't running
  2. Move the things: (replace the destination with the real destination, and make sure to keep the trailing slash on /data/ because of how rsync interprets trailing slashes.
rsync -av --info=progress2 $HOME/Library/Containers/com.docker.docker/Data/vms/0/data/ /Volumes/Liam/Docker/DockerDesktop/
  1. Edit '$HOME/Library/Group Containers/group.com.docker/settings.json' - that's where the settings.json file is! Change dataFolder: "dataFolder": "/Volumes/Liam/Docker/DockerDesktop",

  2. Start up docker desktop and make sure things work.

  3. After ensuring things are working, delete the original data folder.

vinayakg commented 4 months ago

Setting up on a fresh MacOS machine, just required closing docker desktop and settings.json to be changed to "dataFolder": "/Volumes/Liam/Docker/DockerDesktop",. Once changes are done, start docker desktop and your images will now be in newly set path