docker / roadmap

Welcome to the Public Roadmap for All Things Docker! We welcome your ideas.
https://github.com/orgs/docker/projects/51
Creative Commons Zero v1.0 Universal
1.74k stars 255 forks source link

Please support Docker Desktop (WSL2) on Windows on ARM #91

Open dennisameling opened 4 years ago

dennisameling commented 4 years ago

Tell us about your request Devices that run Windows on ARM (arm64), like the Microsoft Surface Pro X, are capable of running WSL2 starting with the Windows 10 May 2020 (2004) update. Currently, Docker Desktop for Windows requires a x64 PC, so it's not possible to run Docker Desktop on these devices.

Which service(s) is this request for? Docker Desktop for Windows

Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard? I'm trying to get Docker Desktop to work on my Windows on ARM (arm64) device with the WSL2 backend, but because it's x64-only, there seems to be no way for me to start using it.

Are you currently working around the issue? Windows on ARM supports emulation for 32-bit/x86 apps, but since Docker Desktop is a x64-only app, we can't benefit from emulation and seem to have absolutely no way to get Docker Desktop to run on these devices.

The only options at the moment are to remote SSH or RDP into a machine that has Docker installed and do development on there, or run Docker within WSL2 using the regular Linux installation instructions.

Additional context WSL2 general availability announcement: https://devblogs.microsoft.com/commandline/wsl2-will-be-generally-available-in-windows-10-version-2004/

Alovchin91 commented 2 years ago

Looks like it will be possible with the upcoming Windows 11 release (22H2).

tim-oleksii commented 2 years ago

@Alovchin91 could you please elaborate what's going to be possible? Golang already supports ARM64 for Windows, MS VS can cross-compile to ARM64 too. Windows Server 2019 is available for ARM64 as well

What is implied to be possible?

Alovchin91 commented 2 years ago

Build 22483 introduces support for Windows Sandbox on ARM64 which, from what I know, is built on Windows containers: https://blogs.windows.com/windows-insider/2021/10/20/announcing-windows-11-insider-preview-build-22483/

I would say this means 22H2 gets Windows containers on ARM64. This is probably the final missing piece for proper Docker support on Windows ARM64. That could also mean Windows ARM64 builders for GitHub Actions πŸŽ‰

@tim-oleksii There's no official Windows Server ARM64 yet, is there? πŸ€” Microsoft keeps very silent about this.

tim-oleksii commented 2 years ago

@Alovchin91 ARM64 available at least for windows insiders program https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewARM64

additionally, there are Microsoft surfaces devices available that are running Win 10 on ARM64 available.

there are updates for windows server 2019 arm64 as well https://uupdump.net/selectlang.php?id=f46f3787-738e-4f04-9bc9-d6a1d6e83de8

Alovchin91 commented 2 years ago

I know, I own Surface Pro X πŸ˜› Windows Client on ARM64 has been around since 2017 or 2018, don't remember exactly. Unfortunately, there was nothing about Windows Server on ARM64 except very early promises. If it exists, it's somewhere deep inside Microsoft and nobody outside the company has ever seen it πŸ€·β€β™‚οΈ

stephanierifai commented 2 years ago

Hey all, no updates here from Docker yet, but thanks for your continued engagement on this. We will be watching this space, as always thank you for your input πŸŽ‰

bwhitt commented 2 years ago

+1 same story for me SPX ARM64

SohaibKtb commented 2 years ago

+1

sidd-kishan commented 2 years ago

+1

aborsato commented 2 years ago

+1 for Docker Desktop on Windows 10 ARM64.

JohMun commented 2 years ago

+1 for Docker Desktop on Windows 10 ARM64.

bitcrazed commented 2 years ago

Hey @dennisameling - Has Win11's on Arm's ability to emulate x64 apps improved x64 Docker Desktop's ability to run on Arm64 devices like ProX?

Also, @justincormack, do you have a list of dependencies that currently block porting Docker Desktop to natively target Arm?

/cc @marcpems

awakecoding commented 2 years ago

@bitcrazed what about native ARM64 containers? containerd builds for Windows ARM64 without problem. but we're still lacking Windows ARM64 container images (those can only come from Microsoft):

FAdL0e7XEAckEUo (1)

bitcrazed commented 2 years ago

@awakecoding Discussing this very subject. Stay tuned.

dennisameling commented 2 years ago

@bitcrazed I've been using Docker directly in WSL2 and that's working well, except that the Docker daemon doesn't start automatically when starting the WSL2 distro. I need to do a sudo service docker start to start the daemon.

Just tried installing x64 Docker Desktop again on my SPX (Windows 11 22622.440, WSL 0.64.0.0 and kernel 5.10.102.1) but it fails to start with the error below. It looks like an error in WSL itself but the strange thing is that I can start Ubuntu 20.04 without these translation issues. Should I create a bug report in https://github.com/microsoft/wsl?

image

System.InvalidOperationException:
Failed to set version to docker-desktop: exit code: 1
 stdout: 
 stderr: <3>WSL (9) ERROR: CreateProcessParseCommon:722: Failed to translate C:\WINDOWS\system32
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Users\denni\AppData\Local\mkcert
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\Python311-arm64\Scripts\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\Python311-arm64\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Users\denni\AppData\Roaming\npm
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\Python39\Scripts\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\Python39\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\Git\cmd
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\Git\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files (Arm)\Microsoft\jdk-11.0.12.7-hotspot\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files (x86)\Python39-32\Scripts\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files (x86)\Python39-32\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Python38\Scripts\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Python38\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\WINDOWS\system32
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\WINDOWS
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\WINDOWS\System32\Wbem
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\WINDOWS\System32\WindowsPowerShell\v1.0\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\WINDOWS\System32\OpenSSH\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\ProgramData\chocolatey\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\dotnet\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\WireGuard\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\PuTTY\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files (x86)\CMake\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\Go\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\Git LFS
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\nodejs\
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Program Files\Docker\Docker\resources\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\ProgramData\DockerDesktop\version-bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Users\denni\.cargo\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Ruby27-x64\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Windows\SysWOW64\WindowsPowerShell\v1.0
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Users\denni\AppData\Local\Microsoft\WindowsApps
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Users\denni\AppData\Local\Microsoft\WindowsApps
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\repos\coding-tools
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Users\denni\.dotnet\tools
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Users\denni\AppData\Local\GitHubDesktop\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Users\denni\AppData\Local\Programs\Microsoft VS Code\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Users\denni\go\bin
<3>WSL (9) ERROR: UtilTranslatePathList:2506: Failed to translate C:\Users\denni\AppData\Roaming\npm
<3>WSL (9) ERROR: CreateProcessEntryCommon:515: execvpe wsl-bootstrap failed 8
<3>WSL (9) ERROR: CreateProcessEntryCommon:524: Create process not expected to return

   bij Docker.ApiServices.WSL2.WslShortLivedCommandResult.LogAndThrowIfUnexpectedExitCode(String prefix, ILogger log, Int32 expectedExitCode) in C:\workspaces\main-merges\src\github.com\docker\pinata\win\src\Docker.ApiServices\WSL2\WslCommand.cs:regel 160
   bij Docker.Engines.WSL2.WSL2Provisioning.<ProvisionAsync>d__8.MoveNext() in C:\workspaces\main-merges\src\github.com\docker\pinata\win\src\Docker.Engines\WSL2\WSL2Provisioning.cs:regel 81
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Docker.Engines.WSL2.LinuxWSL2Engine.<DoStartAsync>d__28.MoveNext() in C:\workspaces\main-merges\src\github.com\docker\pinata\win\src\Docker.Engines\WSL2\LinuxWSL2Engine.cs:regel 177
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Docker.ApiServices.StateMachines.TaskExtensions.<WrapAsyncInCancellationException>d__0.MoveNext() in C:\workspaces\main-merges\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\TaskExtensions.cs:regel 29
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() in C:\workspaces\main-merges\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:regel 67
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bij Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() in C:\workspaces\main-merges\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:regel 92
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Docker.ApiServices.StateMachines.EngineStateMachine.<StartAsync>d__14.MoveNext() in C:\workspaces\main-merges\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\EngineStateMachine.cs:regel 69
--- Einde van stacktracering vanaf vorige locatie waar uitzondering is opgetreden ---
   bij System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bij System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bij Docker.Engines.Engines.<StartAsync>d__22.MoveNext() in C:\workspaces\main-merges\src\github.com\docker\pinata\win\src\Docker.Engines\Engines.cs:regel 108
benternet commented 2 years ago

@bitcrazed I've been using Docker directly in WSL2 and that's working well, except that the Docker daemon doesn't start automatically when starting the WSL2 distro. I need to do a sudo service docker start to start the daemon.

@dennisameling you can configure the Docker daemon to start automatically inside of WSL2 with the boot section of /etc/wsl.conf: https://docs.microsoft.com/en-us/windows/wsl/wsl-config#boot-settings

bitcrazed commented 2 years ago

Imma gonna page-in @craigloewen-msft who's PM for WSL and who can share any news/updates/etc. on this ask.

MrTrilB commented 2 years ago

I would also love this to be a reality. Big thumbs up from me πŸ‘πŸ‘Œ

thecloudranger commented 1 year ago

With Microsoft announcing Surface Pro 9 in both Intel and ARM flavors, having the Docker Desktop on Windows on ARM would be awesome. Is there any indication of progress on this?

GregDuhamel commented 1 year ago

I'm also interested !

halfMonkey commented 1 year ago

+1

jasonrandrews commented 1 year ago

Thinkpad X13s and Windows Dev Kit (project Volterra) should also increase interest.

Iekhasy commented 1 year ago

For the one using project volterra, you can follow this instruction: https://docs.docker.com/engine/install/ubuntu/ also this one if necesary: https://stackoverflow.com/questions/21871479/docker-cant-connect-to-docker-daemon

The only downside is there are no UI, but it will let you start things up.

joesdu commented 1 year ago

+1 for Windows Dev Kit 2023(project Volterra)

docker-robott commented 1 year ago

One of the blockers we have is that we’re not sure how to build a CI infrastructure (mainly test workers). Is anyone aware of any cloud provider with an Arm Windows machines offering?

tim-oleksii commented 1 year ago

buying Ampere Altra should do the job as well as Microsoft Surface.

matze19999 commented 1 year ago

One of the blockers we have is that we’re not sure how to build a CI infrastructure (mainly test workers). Is anyone aware of any cloud provider with an Arm Windows machines offering?

Oracle cloud offers ARM Ampere A1 CPUs with Windows on Arm

ckdake commented 1 year ago

I'd be happy to run a local worker on my Volterra box for a CI worker for dev/test until actual cloud providers have them. I bet you could find a handful of volunteers, especially if it gets this working sooner.

Docker is working great here via WSL for running containers, but I'm not having a great time trying to work with devcontainers without the docker tooling outside of WSL.

Alovchin91 commented 1 year ago

Indeed, Windows Arm Dev Kit is also available now: https://blogs.windows.com/windowsdeveloper/2022/10/24/available-today-windows-dev-kit-2023-aka-project-volterra/

And as mentioned by others, Azure now has Ampere Altra Arm VMs: https://azure.microsoft.com/blog/azure-virtual-machines-with-ampere-altra-arm-based-processors-generally-available/

bledMS82 commented 1 year ago

Microsoft Azure offers windows 11 Arm 64 image via the marketplace - https://azuremarketplace.microsoft.com/en-us/marketplace/apps/microsoftwindowsdesktop.windows11preview-arm64?tab=Overview

bitcrazed commented 1 year ago

Thanks for the ping, @Alovchin91.

Hey @docker-desktop-robot - Azure now has Ampere-powered Arm VMs ready for you to use for your cloud workloads: https://azure.microsoft.com/en-us/blog/azure-virtual-machines-with-ampere-altra-arm-based-processors-generally-available/

And in case you want to use GitHub's self-hosted Runner, GitHub are in the process of porting the Runner to support Windows on Arm as per PRs https://github.com/actions/runner/pull/2022 from @thboop and @nikolaxhristov.

Also looping in @dennisameling who's been active in this space for a while now, and @marcpems, one of my co-conspirators ;)

danforero commented 1 year ago

Another Windows Dev Kit 2023 user here, I'd like to see this too, currently I'm working with docker inside WSL2, but it makes it harder to work on projects that are outside linux, I prefer to do dotnet work on Windows because Visual Studio 2022 makes my work faster.

jakevis commented 1 year ago

+1 here as well. Using a Pro X as well as a Dev Kit - and can not use Dev Containers in VS Code without it

christophermclellan commented 1 year ago

Thanks folks, we're looking in to this one currently. Updates to follow shortly.

bitcrazed commented 1 year ago

Hey @christophermclellan - great to hear! Thanks @dennisameling, @awakecoding, @Alovchin91 & everyone helping track and resolve this issue.

@christophermclellan - please do reach out to @craigloewen-msft if/when you bump into issues as we've already got a couple of discussions underway tracking this and related issues 😜

abusazzad commented 1 year ago

+1 for Docker Desktop on Windows on Arm64. Without this my Windows Dev Kit 2023 is useless to me :-(

pbo-linaro commented 1 year ago

If you're motivated to see windows containers on Windows on Arm64, keep asking on this official project by MS. I did it a few months ago, and it seems they want to get more people asking for this (see this issue).

sobieh commented 1 year ago

You can't have docker without working NAT so i guess they have to fix that one first. NetNat component is somehow completely missing on arm64 windows builds :D

pbo-linaro commented 1 year ago

Interesting, I didn't know about this limitation. Do you have any link about this, or how to test the presence of this component?

sobieh commented 1 year ago

Interesting, I didn't know about this limitation. Do you have any link about this, or how to test the presence of this component?

The easiest way: https://learn.microsoft.com/en-us/powershell/module/netnat/new-netnat Will throw Invalid Class exception as the required provider is not present at (C:\Windows\System32\wbem\NetNat.dll)

pbo-linaro commented 1 year ago

Thanks for the detail. I'll forward this.

awakecoding commented 1 year ago

Regarding WinNAT, I am also waiting for it to become available on Windows on ARM for regular Hyper-V VMs. I've asked on twitter and some other people have also noticed it's been missing and want to know when it will be added: https://twitter.com/bitcrazed/status/1615051676528037888?t=-afm3pmZI1Ms0czhbF-YLA&s=19

bitcrazed commented 1 year ago

Hey folks. Quick update to let you know that we've an internal bug tracking this ask (42503582).

No ETA yet, but will let you know if/when a date firms-up.

visschersm commented 1 year ago

πŸ‘ Really looking forward to full windows arm64 support. It is an amazing machine and the overall support seems to getting a lot better. Hopefully we'll have a full install-able development environment on our Surface pro X's soon.

joespeed commented 1 year ago

fyi Azure Arm processor is also available as desktop with 32 to 128 cores and runs Windows.

bitcrazed commented 1 year ago

@Flammenwerfer44 On the contrary, those "meaningless" internal ticket numbers track actual work to address the issue reported. And the work to fix the reported issues is not carried out by devs working on unrelated shell & UX features.

As posted above, @christophermclellan & team are looking into the work necessary at the Docker end, and we in Windows are working hard to remove any blockers to enable Docker for Windows Desktop to work correctly on Arm-powered devices. If it was an easy fix it would have been fixed by now.

Thanks, all, for your continued patience & support.

min918 commented 1 year ago

+1 for Windows Dev Kit 2023(project Volterra)

ιžεΈΈιœ€θ¦ Docker Desktop

Johno-ACSLive commented 1 year ago

Keen on seeing this come to fruition. Microsoft has made some headway on the current canary builds of Windows 11 on ARM, is this enough to allow Docker Desktop work to progress or is there still some missing capability? I know the Windows Hypervisor Platform feature is still missing (I really hope someone at Microsoft gets this feature added back in) but I'm not sure that it's required for Docker Desktop.

rendevor commented 1 year ago

Hi there. Guys with Lenovo Thinkpad x13s are in the club. Dell anounced own ARM based machine, BTW. I use Ubuntu in WSL2 with docker, but would like to start to use Docker Desktop to use Windows images. Go ahead guys, we are waiting for support.

Adz5156 commented 11 months ago

Hi all, Any news/updates on this one? Would really love to see docker desktop on the Arm64 devices. Thanks