Docker ARM for windows: Can't run linux/amd64 on linux/arm64/v8
Recently, Docker released support for ARM devices on Windows, but I'm receiving errors with mssql
2024-07-04 20:01:46 SQL Server 2022 will run as non-root by default. 2024-07-04 20:01:46 This container is running as user mssql. 2024-07-04 20:01:46 To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216. 2024-07-04 20:01:46 /opt/mssql/bin/sqlservr: Invalid mapping of address 0x2aaaad74d000 in reserved address space below 0x400000000000. Possible causes: 2024-07-04 20:01:46 1) the process (itself, or via a wrapper) starts-up its own running environment sets the stack size limit to unlimited via syscall setrlimit(2); 2024-07-04 20:01:46 2) the process (itself, or via a wrapper) adjusts its own execution domain and flag the system its legacy personality via syscall personality(2); 2024-07-04 20:01:46 3) sysadmin deliberately sets the system to run on legacy VA layout mode by adjusting a sysctl knob vm.legacy_va_layout. 2024-07-04 20:01:46
The error seems very similar when the M1 released, is there any workaround?
Related to #668, it was fixed there because of Rosseta emulation support via docker, seems to not be the case on Docker ARM for windows with Prism
Running into the same issue on this system:
OS Name: Microsoft Windows 11 Pro
Version: 10.0.26100 Build 26100
System Type: ARM64-based PC
Personally hoping #864 gains some traction, would love native support for arm64 instead of having to find some workaround like Rosetta
Personally hoping #864 gains some traction, would love native support for
arm64instead of having to find some workaround like Rosetta
TBH, I'll use any solution since right now, there is no way to use MSSQL on the new snapdragon devices, express installation, docker, etc... None works.
(Outside of azure-edge-sql but that is not a complete instance)
(Outside of azure-edge-sql but that is not a complete instance)
That was going to be my suggestion for now, as I don't believe there's any MS SQL Server on Linux Docker images that support ARM64. ~I thought it used to say that explicitly in the documentation and saw that message is no longer there so had hope~. EDIT: I was thinking of SQL Edge where ARM64 was mentioned.
For me, using azure-edge-sql is good enough for some local development when on the go until MS either supports ARM64 for SQL Server on Linux, or Docker adds prism support for Windows like they did with Rosetta on Mac.
The only other option I've had working on my Surface Pro 11 is localdb, but that only works over named pipes when running emulated on WoA, so SQL Edge in Docker seems the most reasonable choice if you can get by with the lack of features.
The SQL edge option seems to be a bit unreliable as well going forward: https://techcommunity.microsoft.com/blog/sqlserver/azure-sql-edge-update---september-2023/3930827
Thanks for that link @guidoschippers . Turns out 5 months on that Azure SQL Edge for arm64 has been retired, and the rest of the product retires in September.
Unlike the OP I am on macOS, not Windows, but the issue is the same. I think my only options for a development machine are a connection to an Azure SQL Managed Instance, or to see if I can find an image that doesn't crash in Docker's rosetta2 emulation as described in the blog linked from the post you mentioned: https://devblogs.microsoft.com/azure-sql/development-with-sql-in-containers-on-macos/
By the way, is this a documentation bug, as the home page for this image says:
This image requires Docker Engine 1.8+ in any of their supported platforms. ?
For windows anyone tried --platform linux/amd64 ? Is this works?