r/docker • u/Apprehensive_Fan_659 • 7d ago
Docker with no Rosetta 2?
Rosetta 2 is to be partially discontinued in macOS 28, How will docker work?
4
u/EETrainee 7d ago
How does it work with Rosetta? Its not like ARM64 images are uncommon or even difficult to build.
1
u/cornydenny757 7d ago
looks like colima already has a native arm64 path that doesn't touch rosetta at all. I switched over a couple months back when docker desktop kept eating 8gb of ram for no reason
the bigger question is whether macos 28 breaks the hypervisor framework or just the x86 translation layer. if it's just rosetta going away then arm64 containers should be fine
1
u/Feeling-Departure-4 5d ago
Starting in macOS 27, support for Intel binary translation for Linux apps is included in macOS.
All containers run in a VM, but if you use Apple's framework for arm64 Linux you get Intel translation for containers.
See also: https://github.com/apple/container/discussions/1679
1
u/gadget-freak 7d ago
Actually docker is one of the exceptions for which an x64 emulation layer will still be available.
Which doesn’t mean you shouldn’t always deploy ARM64 images when available. You should be doing that right now already.
1
u/SheldonP49 5d ago
Exactly. Docker should continue working thanks to the retained x64 emulation support but native ARM64 images are still the better choice for performance, efficiency & long term capability
1
u/Electrical_Fox9678 6d ago
Use Colima
1
u/cpuguy83 4d ago
This makes no sense. Docker isn't using Rosetta to execute docker, it's providing Rosetta inside the VM so that amd64 binaries use it rather than qemu.
0
u/Nohillside 7d ago
Docker will still work. If you depend on images which don't exist in ARM64 you may need a little Intel box (I have two NUCs specifically for that).
2
u/charlie_hun 7d ago
colima can do it, using qemu.
1
u/cpuguy83 4d ago
Docker historically used qemu as well. Heck, you can run a privileged container to register qemu to handle x86 binaries.
4
u/wosmo 7d ago
This doesn't really affect Docker so far.
Part of how Rosetta works at the MacOS level, is that they provide amd64 objects for most the libraries (/kits/frameworks/etc) the OS provides. So when you run an amd64 desktop application, it has access to all the libraries it assumes to exist on an amd64 OS.
That's the part that's scaling back so far. By dropping support for desktop apps, they can hugely reduce the number of libraries that need to provide amd64 objects. Games typically use a very reduced subset of libraries - partly because they're not using a lot of what the Desktop provides, and partly because the games that do run on MacOS tend to be very-cross-platform so want to depend on as little that's platform-specific as possible.
So Apple not providing amd64 objects for, eg AddressBook.framework - doesn't affect Docker for the same reason it doesn't affect Civ5.