Docker Desktop Broken on Mac OS Update for over a Week
dockerstatus.com
dockerstatus.com
The access controls on the Apple developer portal are not particularly fine grained, there is no audit trail, and many actions cannot be undone.
App Store Developer portal is a mess. I manage 10+ accounts and I hate using it so much (Google Play isn’t better, just sucks in different ways). I also have access to an enterprise account and “nerve racking” does not even begin to describe what interacting with the portal is like.
A single click with a badly worded confirmation step is the ONLY thing keeping your released app in the field from shutting down until you get a new version out. Let me say that again: if you delete your signing cert then your app will not open on devices anymore. No way to communicate to users to update or let them know anything at all. Just dead.
Even if you avoid making that mistake, the cert rotation dance is horrible and terrifying, it doesn’t help that Apple’s docs and help text are completely useless. It doesn’t help that most info you find online is for AppStore certs/signing and not Enterprise certs/signing (the _massive_ difference being you can revoke a cert for an App Store app and it keeps working). There is no wording about max certs on their webpage so in most cases you just have to try something in the portal and see if it fails. It’s even more fun because every click in the cert rotation process is a gamble and so after you’ve worked yourself up to finally clicking the button you then run right into an error and you have to rethink your strategy. Again, your entire business potentially hangs in the balance if you pick wrong, have fun!
I understand what Apple is trying to accomplish and that’s fine but they need better messaging. They need to make it clear what the effects of revoking/deleting certs/profiles is. They need to make the connections between certs and profiles more obvious.
The whole UI is horrible and flakey on top of that.
They are listing this as "operational" but the steps they are outlining here are not a proper solution for this problem! I cannot sudo on my work macs. How can a severe problem like this go on for more than a week? This has completely shut down my local development. I'm mad at the situation more than anything, but also a big middle finger to mac OS for not allowing me, a somewhat mature professional adult with expertise in stuff like this, what I want on my machine. My new workstation orders are not going to be macs. Good job!
The worst part is, even if you go with the extremely user-hostile un-minimizable prompt wants you to do, which is delete a bunch of files, the popup will still spam you until you are able to follow the instructions on the remediation that docker provided! Completely FUBAR
Take a deep breath.
Uninstall docker, including from homebrew if you've ever used that to install it.
Reboot
Download newest ARM version from Docker.
Install it.
Reboot again.
You should be good.
In addition to a cron job, we had an active pubsub listener on each machine to poke this process.
You can do this on macOS too, or at least, modern macOS "should" be able to do this.
We did this on a large fleet of user machines (laptops) running Windows 10/11, macOS, and Linux.
If you don't trust people, give them Windows and use the tools that have been around for decades for this.
So, you pay someone that can write a report explaining how the boxes will be checked in a way that minimizes the blast radius of security theater stuff like broken approaches to remote management. Consider fixing your soc compliance plan.
Anyway, assuming the remote management tool has root, you can use brew to install docker desktop from the cli.
Macs have built-in device management tools, and there are third-party solutions like JAMF that can definitely run scripts like what's needed to fix Docker, as root, including reboots if necessary.
It really sounds like the primary problem you're experiencing is not what Macs allow, nor even the shoddiness of the Docker solution (which I will not attempt to defend, I agree they should have something more robust), but your company's policies that put you in a position of responsibility but no power.
I'm sorry, but there's just no sane system design that can make up for such abjectly counterproductive policies, no matter how common they may be.
If you are in the org where your IT cannot do this, and the same IT took away your "sudo" access, then there is nothing you can do. Even if there were a hacky way, it would be against policies, so do it by the book and wait for IT to fix it for you. If you are on important and urgent project, escalate via official channels. If you are not on important project, relax and don't forget to write "I could not do anything because I am blocked on IT" in all of your status reports.
If the previous paragraph makes your blood boil or makes you want to cry, consider working for a different company which either gives autonomy to developers or has better IT.
It may surprise you to learn that a lot of orgs have critically understaffed or unknowledgeable IT teams. Yea, I could "solve" world hunger by simply feeding everyone, but how do I actually do that?
I am the crititcally understaffed "IT" that has to fix it for you. And now it's urgent because local development has basically halted on tons of devices for a variety of weird and undocumented reasons. I am trying to communicate to you that rolling out a "fix" for this type of thing to a distributed fleet is not trivial at all. For a typical IT sysadmin this is one of the most annoying possible things, at the worst possible time too (post holiday), and that's not even my official role! I just have to play it a lot. Also, I think you're severely underestimating how complicated it is managing a remote fleet of devices under current compliance and security standards across the industry. You're talking from the perspective of a dev that gets mad they can't have unlimited access to the prod db with a single ticket, I think, but the reality is these things are not easy to roll out on the fly under specific circumstances. Good for you that you found a company that fits your needs/whims and isnt bound by these same kinds of restrictions. I'm also not making any commentary on whether any of this is sane at all, just that I am the guy at the short end of the stick that has to deal with it and I'm (justifiably) pissed off about it.
Being outraged that you need to invoke administrative privileges on a development machine seems unreasonable to me. You can't get far with that kind of restriction.
But even if it is required to manually stop and remove the two daemons, shouldn't that be doable using any device management solution? Perhaps using something like Jamf Self Service? Because it otherwise wouldn't be possible to deploy any changes without that kind of capability.
Also, disallowing root is developer hostile security theater IMO. It prevents a wide range of debugging techniques while being limited in the kind of harm it prevents.
Obligatory XKCD: https://xkcd.com/1200/
and even then it’s completely reasonable to disallow unlimited privileges on a managed workstation. the first time you deal with a breach because some idiot developer decided to install malware masquerading as a chatgpt wrapper will teach you this lesson.
I have never had sudo on a work managed device, but always had a phone number to call for exactly these types of issues. Explain the problem, point them to the fix. They look it up internally, call me back half an hour later, take over the machine and perform the procedure.
Is it frictionless? No. Is it impossible? No, just part of dealing with corporate IT.
If your company has over 250 employees or more than $10 million in annual revenue, it's against their license terms for anyone at the company to use Docker Desktop without paying for a subscription [0]. Docker can and will go after companies who are out of compliance with this (ask me how I know).
If paying a subscription fee for a sub-par product doesn't sound great to you, I encourage you to check out one of the many alternatives available. I've used Colima (MIT licensed) [1] for a few years now and it works great.
[0] https://www.docker.com/pricing/faq/, see the section "Who’s required to pay for Docker subscription plans?"
Which one do folks like best?
Last I tried Podman Desktop, it was OK, but had worse performance than Docker and was a little rougher around the edges. Still, not bad.
Colima is probably fine, but I had issues that were showstoppers for me. Trying to get it to consistently start up correctly in a CI environment seemed oddly challenging, and it doesn't seem to support IPv6 at all. YMMV.
Have not tried Rancher Desktop.
I've even had a situation where the support engineer jumped on a call with me to see the repro as it was a very specific/hard to share a simple repro situation.
Orbstack would be my next choice, but costs money for comercial user and my employer is a tight arse.
Work machine is managed by orgs fleet management software (jamf?) and thought it was an issue on their end (bad conf push).
I know I can still run it from CD/CI, but I don't want to jump around like a crazy monkey trying to debug my builds locally. I had issues with docker desktop just hanging on my mac.
I've been using podman for over a year with docker context pointing to podman so I can still use bake.
I've moved some of our workloads to s2i and bash scripts and could not be happier. Old good sysadminy stuff just works.
My PC isn’t managed at all by any other system or person.
It uninstalls the old one, fails at installing new version -> whoops, gone.
I would be more inclined to blame this on Apple than Docker, but I haven't looked too deeply since things are working for us. Curious about you folks' opinions.
Additionally, Podman Desktop on Mac always return on ICMP echo, try running `ping 5.5.5.5` or any other non-ping-able IP and see it yourself.
That's not the case if podman runs on a Linux VM on UTM for example. Additionally, ICMP behaves correctly in the later case.
In the mean time, I'm using Orbstack. [1] Much faster, lightweight and a native alternative.
is the best alternative to Docker Desktop on Mac.
I hardly even need Docker Desktop.
It just proves useful to start and stop Docker this way, since it uses fewer resources.
I downloaded the new update and then my app was corrupt and couldn't open so I just re-downloaded and installed and it was fine.