I abandoned Docker on the Mac because of that, and haven't touched it since. That was early 2021; maybe it's faster now.
I believe improvements have been made, but a lot of people these days check out their code directly in the container rather than using bind mounts, leveraging the fact that a lot of editors/IDEs now will interface directly with the containers.
But... watch out for software compatibility: m1/m2 requires recompiling from source which is painless... when it works. I recently needed syslinux and had to move to x86 cloud instance. Fortunately, docker made that easy.
I mean I want to use containers but on top of setting up the host, they require composing containers (even when ready made for customizations), networking, logging and fight for more memory when using memory hungry stuff in conjunction (like elastic or other db).
If my main job was devops, I suppose I would make myself more valuable by doing everything in containers but when I deploy an app it is because I have to on top of many other duties so being able to not only setup but troubleshoot and fix outages quickly is most important (and I hope a full time devops person, if I ever get one) will help me migrate all that some day so it looks nice and neat.
- spyware (transmits private data off your machine without consent when it crashes, which it does a lot)
- nonfree software
- has a git repo so you don't notice it's nonfree software
What can you use to do that?
You can either run an alternative architecture or an alternative OS. Running MacOS software for x86 is running through an interpreter.
If you want to run x86 Linux software, then MacOS on Arm is just one too many steps away.
I think there’s stuff that uses it under the hood like colima and rancher.
Basically the issue is that quite a lot of software is amd64 only and they haven’t cross complied binary layers for arm64.
So for local development you have to emulate.
It’s a shame there’s not a way to leverage rosetta2 really.
Also, are you using AMD or ARM images for those?
even if the containers themselves only use 128MiB total: the VM will cordon off everything it's told to; which most people are unlikely to change until there's an issue, and is configurable down to 1GiB as a minimum.
FWIW Docker Desktop on my machine (M2 Macbook Air; 24GiB Ram) defaulted to using 8GiB of RAM.
Scratching my head as to why devs are buying up these new macs knowing up front that they will not work well for the job they were bought for.
Why not make it easier for yourself and have your dev machine match up with prod?
You can run a constant VM with 2/4/8/128gb of ram or whatever you need. I use one at work for years and I think mine is 16gb of ram and it’s way over provisioned most of the time. Unlike how you might expect, treat the cloud vm like a work laptop not a production service. Let people write scripts that stay there, let people keep it on 24/7, available on demand, etc. It’s a cloud laptop not a production VM.
Even giving people a headless Intel NUC to connect their laptops too would be way, way cheaper (assuming you're just doing development).
Having said that, cloud development means you don't need big capex orders for laptops all the time, and it's probably easier to secure.