Installing docker desktop on windows 11

Install

Start-Process 'E:\Downloads\Docker Desktop Installer.exe' -Wait -ArgumentList 'install', '--accept-license', '--installation-dir="D:\Program Files\Docker"', '--wsl-default-data-root="D:\Program Files\Docker-data"'

Migrate docker-desktop [deprecated]

PS C:\Windows\system32> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop-data Stopped 2
docker-desktop Stopped 2
PS C:\Windows\system32> wsl --export docker-desktop-data "D:\Docker\wsl\docker-desktop-data.tar"
正在导出,这可能需要几分钟时间。
操作成功完成。
PS C:\Windows\system32> wsl --unregister docker-desktop-data
正在注销。
操作成功完成。
PS C:\Windows\system32> wsl --import docker-desktop-data "D:\Docker\wsl\data" "D:\Docker\wsl\docker-desktop-data.tar"
正在导入,这可能需要几分钟时间。
操作成功完成。
PS C:\Windows\system32> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop-data Stopped 2
docker-desktop Stopped 2

On 4.31 and later docker-desktop-data is deprecated, setting docker-desktop image location in Resources - Advanced option.

Uninstall

start /w "" "Docker Desktop Installer.exe" uninstall

Troubleshooting

dial tcp [2a03:2880:f134:83:face:b00c:0:25de]:443: i/o timeout.

$ docker build -t sakurayumeno/database:11.2.0.4-ee .
[+] Building 31.5s (2/2) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.3s
=> => transferring dockerfile: 590B 0.0s
=> ERROR [internal] load metadata for docker.io/library/oraclelinux:6.10 29.7s
------
> [internal] load metadata for docker.io/library/oraclelinux:6.10:
------
Dockerfile:7
--------------------
5 | # $ docker build -t sakurayumeno/database:11.2.0.4-ee .
6 | #
7 | >>> FROM oraclelinux:6.10
8 | LABEL author="sakurayumeno"
9 |
--------------------
ERROR: failed to solve: DeadlineExceeded: DeadlineExceeded: DeadlineExceeded: oraclelinux:6.10: failed to resolve source metadata for docker.io/library/oraclelinux:6.10: failed to authorize: DeadlineExceeded: failed to fetch anonymous token: Get "https://auth.docker.io/token?scope=repository%3Alibrary%2Foraclelinux%3Apull&service=registry.docker.io": dial tcp [2a03:2880:f134:83:face:b00c:0:25de]:443: i/o timeout

Modify daemon.json to add register mirrors.

{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}

For security reasons C:\ProgramData\DockerDesktop must be owned by an elevated account

Open powershell, run as administor.

takeown /F "C:\ProgramData\DockerDesktop" /R /D Y
icacls "C:\ProgramData\DockerDesktop" /setowner "Administrators" /T /C
icacls "C:\ProgramData\DockerDesktop" /grant Administrators:F /T