I installed using the started the “Docker Desktop Installer.exe” from docker.com.
I downloaded a linux debian container.
Then I tried the getting started tutorial from docker.com and it was working until I had to access the file “DockerFile” which I realized would need to be on my working drive.
So I decided to reinstall docker to another drive but I remembered that the application does not ask for a drive, it simply installs directly on the C: drive without asking. That is causing many people to waste time on Windows I think. Like many people, my C: drive is a smaller SSD drive so I don’t want to use it for docker.
So I tried to change the default drive for docker/container/files/data but I did not see any options in the GUI.
So I searched the doc/forums and I found some solutions but none of them worked so far.
Solution 1:
I saw some people trying to move the dockers using these commands so I tried it:
wsl --export docker-desktop-data d:\docker-desktop-data.tar
wsl --unregister docker-desktop-data
wsl --import docker-desktop-data d:\Dockers\ d:\docker-desktop-data.tar --version 2
I did not get any error so it seemed to work. I can see a file:
d:\Dockers\ext4.vhdx (740MB)
But after restarting DockerDesktop, it did not see my previous ‘getting started’ docker I had installed. So I guessed there was something missing.
Solution 2:
I tried the following which I found on StackOverflow and on Microsoft documentation:
Create a file “C:\ProgramData\Docker\config\deamon.json” with this in it:
{
“data-root”: “D:\\Dockers”
}
But after restarting DockerDesktop, it did not see my previous ‘getting started’ docker either.
Solution 3:
Using DockerDesktop, tried adding this line in the json under “Settings → Docker Engine”:
,"data-root": "D:\\Dockers"
At this point, when I launch DockerDesktop, it justs show “docker desktop starting…” and seems to be stuck there. After a few minutes, a popup error message appears:
System.TimeoutException:
Timed out while wait for Docker service to be ready. Engine state: starting. Current action: waiting for Docker API to respond on unix:///var/run/docker.sock
at Docker.Engines.LinuxkitDaemonStartup.d__5.MoveNext() in C:\workspaces\PR-17132\src\githubcom\docker\pinata\win\src\Docker.Engines\LinuxkitDaemonStartup.cs:line 77
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Docker.Engines.WSL2.LinuxWSL2Engine.d__28.MoveNext() in C:\workspaces\PR-17132\src\githubcom\docker\pinata\win\src\Docker.Engines\WSL2\LinuxWSL2Engine.cs:line 179
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Docker.ApiServices.StateMachines.TaskExtensions.d__0.MoveNext() in C:\workspaces\PR-17132\src\githubcom\docker\pinata\win\src\Docker.ApiServices\StateMachines\TaskExtensions.cs:line 29
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Docker.ApiServices.StateMachines.StartTransition.d__5.MoveNext() in C:\workspaces\PR-17132\src\githubcom\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:line 67
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Docker.ApiServices.StateMachines.StartTransition.d__5.MoveNext() in C:\workspaces\PR-17132\src\githubcom\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:line 92
I am not sure what to do next. Is there an easy way to install Docker so I can choose which drives/folders it will use?