This post is equal parts actually about Docker, and the hilarity of being a woman on the internet in tech.
Who knew anyone read my tweets...
For further actions, you may consider blocking this person and/or reporting abuse
I'm the notorious Docker-hater at my workplace. I don't like any of it. i don't like the CLI, I don't like Dockerfiles, I don't like how the registries work, I don't like the Docker daemon. It's complexity is unwarranted for 99% of all applications. And it's slow.
Everything about Docker is a lowest-common-denominator choice:
The image format. An OCI image is a tarball of tarballs, plus some json metadata. This is not an improvement on traditional packages. There is no native versioning concept in OCI images, it's just a string, and you're left to figure it all out. Not to mention that building an OCI image with a Dockerfile relies on all the Debians and Alpines and all the other Linux distros putting together an actually working system. OCI images don't really solve the problem of packaging. The format is space-ineffecient and network-inefficient. I'll admit that it is portable, but 90% of everyone's production is some Debian, Ubuntu, or RHEL-variant. In 2022, Linux portability is really freaking easy.
Also: just because Dockerfiles won't let you write inline for-loops, that doesn't make them idempotent.
Forcing all config through the narrow aperture of
docker run -eenv vars or-vvolume mounts is annoying, especially for local dev. Keeping track of UID and GID inside a container is now something we have to do locally - a problem we invented for ourselves out of whole cloth. It's taken a decade for user namespaces to come online and those aren't really widely supported.There's also this recent Orange Website post, which asked who was running at scale without containers. Hyperscalers like WhatsApp deployed with rsync. Hello? news.ycombinator.com/item?id=30767393
Of course it's early days yet. And "Docker" (or Podman, which I prefer) is not the only way to do containerization on Linux.
All the while, over the past 10 years, VMs also got a LOT faster. And everybody running Docker for mac is using one, every time. You're just denied all the tools (and the learning experience) of getting in there and optimizing things for your use case.
Now, you can even agree with all this and say, "Yeah, it's kinda crappy, but it works and it's widely supported, and my core business isn't deployment scripts. That's Undifferentiated Heavy Lifting (TM)". Is your core business Dockerfiles? That thing that only tars up a chroot and lets you figure out everything else? Maybe that everything else is writing a bunch of yaml, and then writing some bash on top anyway?
I implore everyone reading this to keep an open mind. Just because something is popular doesn't make it the best, or appropriate for you. Learn from the remarkable non-Docker success stories of the past 10 years - right in the middle of peak k8s hype.
Here's some links to videos that demonstrate cool non-Docker containerization stuff:
Hear here!
Docker fucking sucks. The more I work with it, the more useless and time suck it appears to be. Some of us however have environments that are absolutely dependent on it and we'll never be able to move away. It is what it is.
Wow, really really appreciate your response and yeah a lot of great points here
What a fascinating experience. It's always wild to me when the immediate reaction to "this tool is frustrating to use and I don't like it" is "oh you must be a junior". In a lot of cases, the reason I don't like a tool is because I've spent years being shackled to it!! I'm very familiar with the tool and all the reasons it makes my life difficult! And I agree, I think much of that reaction is rooted in sexism. It's an echo of the undercurrent that exists in the tech community that women simply do not know what they're talking about and have to constantly prove that they do.
I do consider myself a Docker lover, but I really appreciate your perspective. Not everyone wants to be tinkering around with Linux environments constantly just to set up a simple application. I feel like the best Docker experience you can have is when someone else makes the image for you haha. If you have to make an image yourself, especially as a junior dev like in the scenarios you describe, you could be in for a very bad time.
That said, I'd really love to hear some of the container tools/alternatives that were shared with you! I'd be interested to check out some other way of tackling this problem 😄
I have a horrific backlog on that tweet I never expected that much attention and kept expecting it to die down and so never muted, RIP my notifications. ANYWAY, I need to dig back through all the traffic and find everything people said, things that pop out were alternates I'd never heard of, other drivers for Docker storage, but I am happy to DM you a more concise list when I have a chance to pore through all the content on that tweet lol. Also thank you for your comment, and I truly feel you on the "yes I hate it because I have had to work with it so long" thing, although I am truly as I said glad other people aren't tormented by Docker like me
What you've discovered are the golden hammer gangs.
If you've never heard of the golden hammer term its a cognative bias that involves an over-reliance on a familiar tool. These people treat these tools with religious fanaticism.
For the most part don't engage with them and those not commenting constructively. Don't let such golden hammer wielding trolls get the better of you.
At the end of the day a tool is a tool and used correctly for the right situation makes life easier, and using the wrong tool just make life hard.
For example using a cheifs knife to cut a slice of bread will not be as easy as using a bread knife.
Try to avoid their public roadmap, it is not a very fun one.
To see the sort of things they're currently spending their resources on, and then the even worse ideas currently being researched is just sad, even disheartening.
And those hundreds of open GitHub issues about real problems, most still seeing daily activity even after 8 years? Yeah... nope 😉
As a tech lead I like developers to understand their environment, using Docker to setup local dev environments, have proven really hard for devs to eventually get there, as they now have to understand another layer of complexity on top of the OS and the tools they need.
This is the most baffling justification. Devs are a fickle bunch. We want all our tools to boil the oceans we work in while also getting mad at them for not knowing the exact temperature of our particular use case.
Every tool is going to exact some pretty ugly injustices upon me the longer I use them. I don't think that tool owes me a goddamn thing though. I don't want it to.
to me docker is like wordpress of the containerization world, every junior dev uses is and claims look at me mommy im better than everyone bc i can read. ok kiddo sit down. just like wordpress its everywhere and when it works it works, but it is infuriating when your trying to something difficult; like context switching between projects, or build out an actual system vs mock ups. i still need to reboot after every context switch. sometimes my network names are the same, ill use it until something better comes along. my time is valuable a lot of kids on the internet dont care about that, and want to pigeonhole everyone into their cookie cutter mentatility, bc it works for me, like that ever has had a success rate more than 5%. now that ai is here maybe that will generate something that doesnt have these probe. im not a junior or a boomer either yet ive been programming since the 80s, ive seen this same pattern hundreds of times before, the more things change the more they stay the same
The docker documention issue is too true. As someone just starting out with Docker, I dread having to go through the official documentation.