Docker on ARM will work, Docker for x86 will not. The State of the Union showed a demo of Hypervisor.framework with Parallels, and they made it clear that Debian AArch64 was running (uname -a). Since Docker runs inside a VM on the Mac, it'll have to be an ARM VM with ARM containers.
(Presumably, running docker build with your Dockerfile will make it work just fine, unless you need x86 specific libraries).
Could you run the linux docker machine on aarch64 and just the docker container/process on JIT-x86? The majority of syscalls doesn't care about architecture, do they?
And the OS should theoretically be agnostic to the machine code the application is written in. Probably requires some cooperation on part of the linux docker host.
Did I get the idea across?
You would go to hell for implementing that either way
You should be able to, since everything Docker runs inside of a Linux VM. You don't get to use Rosetta though (since it's a macOS thing), and the performance may be poor.
Apple mentioned they are specifically "working with Docker to support 'these things' in coming months".
Confirmed with some Docker folks they are working on "something".
All very nondescript, but they said they can't talk about it yet.
So I had to look this up: Docker do not rely on VT-x. If kernel has cgroups it runs.
Hypothetically it could run natively on Windows NT, Linux, Darwin, Solaris, etc if it ported for appropriate APIs. However, most Docker containers contain x86_64 Linux binaries, so the runtime environment has to be binary compatible with x86_64 Linux.
Thus, instead of going through the pain similar to WSL1, Docker people just spin up a midsize Linux VM, run remote controlled Docker daemon in it and call that as the "Docker for [PLATFORM]". This will suffice because use case of Docker is to debug on a laptop and deploy to GNU/Linux servers.
So if ARM macOS runs an x86_64 Ubuntu VM it also means Docker runs.
Docker on mac does rely on virtualizing a full linux kernel, and xnu doesn't have containerization APIs to do anything different.
> So if ARM macOS runs an x86_64 Ubuntu VM it also means Docker runs.
So far we haven't seen anything like that happening. The State of the Union talk yesterday went as far as running a uname -a just to show that it was an aarch64 debian they were running.
Possibly they'll do something like WSL/WSL2 to provide an ARM based Linux kernel interface and then use Rosetta2 to translate the x64 code in user space to ARM?
Having ARM only containers would be mostly useless (it's technically possible, but I bet there are very few ARM container images around).
There are heaps and heaps of ARM containers around thanks to the Raspberry Pi.
I've never had a problem running Docker on my Pi, and I don't expect anyone will have a problem running Docker on a Mac given Apple's much much larger developer market share.
My understanding is that the virtualization Apple provides is only for the same architecture as the host OS. In the demos given running Debian, they run uname -a and it reports aarch64
Docker has had an experimental feature for some time to build containers cross architecture [1]. I'm guessing this transition is a good excuse to finish that up. Running cross architecture containers with only Docker is not possible as far as I know.
I'm guessing that we're going to have to see a lot better adoption of cross-platform container builds because of this.
Docker already runs fine on ARM64, like on Raspberry Pis, so there would be no Rosetta translation needed for ARM64 images. If Rosetta could translate binaries in x86/AMD64 images, that would be very helpful indeed.
... and it's actually kinda kick-ass - the original A1 instances were fairly disappointing but the M6g is at an extremely aggressive price/performance point.
How will this impact docker? Does this mean you can't run x86 docker containers on new Apple laptops?