119 lines
2.0 KiB
Markdown
119 lines
2.0 KiB
Markdown
|
Fuck Docker
|
|||
|
It works, but it gaslights you about everything.
|
|||
|
|
|||
|
Docker is amazing when it works. And when it doesn’t?
|
|||
|
It’s a smug little daemon that eats your RAM, forgets your volumes, lies about its health, and restarts things for reasons it refuses to explain.
|
|||
|
|
|||
|
Scene 1: Everything Is Fine™
|
|||
|
|
|||
|
You run:
|
|||
|
docker ps
|
|||
|
|
|||
|
It tells you:
|
|||
|
azuracast Up 30 seconds
|
|||
|
db Up 31 seconds
|
|||
|
nginx Up 30 seconds
|
|||
|
|
|||
|
Everything is up.
|
|||
|
Except the site is down.
|
|||
|
The UI is dead.
|
|||
|
curl gives you nothing.
|
|||
|
The logs? Empty.
|
|||
|
|
|||
|
Docker: “Everything’s running fine 👍”
|
|||
|
|
|||
|
Scene 2: Logs Are a Lie
|
|||
|
|
|||
|
docker logs azuracast
|
|||
|
|
|||
|
Returns:
|
|||
|
|
|||
|
Just enough output to give you hope
|
|||
|
|
|||
|
Then nothing
|
|||
|
|
|||
|
Then silence
|
|||
|
|
|||
|
You tail it.
|
|||
|
You restart it.
|
|||
|
You exec into it.
|
|||
|
It’s just a tomb with a PID.
|
|||
|
|
|||
|
Scene 3: It Forgets Everything
|
|||
|
|
|||
|
You reboot the host.
|
|||
|
|
|||
|
Suddenly:
|
|||
|
|
|||
|
Your containers forget their volumes
|
|||
|
|
|||
|
Your docker-compose.override.yml is ignored
|
|||
|
|
|||
|
Your networks vanish
|
|||
|
|
|||
|
And the bridge interface is now possessed
|
|||
|
|
|||
|
Scene 4: Volumes Are Haunted
|
|||
|
|
|||
|
docker volume rm azuracast_station_data
|
|||
|
|
|||
|
Error: volume is in use
|
|||
|
|
|||
|
By what?
|
|||
|
You stopped all containers. You nuked the services.
|
|||
|
It’s still in use — by ghosts.
|
|||
|
|
|||
|
Eventually you just:
|
|||
|
|
|||
|
rm -rf /var/lib/docker
|
|||
|
|
|||
|
Because therapy is cheaper than debugging this.
|
|||
|
|
|||
|
Scene 5: docker-compose Is a Trick
|
|||
|
|
|||
|
docker-compose down
|
|||
|
docker-compose up -d
|
|||
|
|
|||
|
Now:
|
|||
|
|
|||
|
Some things are gone
|
|||
|
|
|||
|
Some things are doubled
|
|||
|
|
|||
|
Your stations/ folder is missing
|
|||
|
|
|||
|
And your database container is holding a grudge
|
|||
|
|
|||
|
You try to roll back.
|
|||
|
There is no roll back. Only sadness.
|
|||
|
|
|||
|
Scene 6: It’s Not Even Docker Anymore
|
|||
|
|
|||
|
Modern Docker is:
|
|||
|
|
|||
|
Docker
|
|||
|
|
|||
|
Which is actually Moby
|
|||
|
|
|||
|
Which uses containerd
|
|||
|
|
|||
|
Which is managed by nerdctl
|
|||
|
|
|||
|
Which builds with buildkit
|
|||
|
|
|||
|
Which logs via journald
|
|||
|
|
|||
|
Which stores data in an OCI-conforming mess of layers
|
|||
|
|
|||
|
None of it can be managed with just docker.
|
|||
|
|
|||
|
Final Thought
|
|||
|
|
|||
|
Docker is powerful.
|
|||
|
Docker is everywhere.
|
|||
|
Docker changed the world.
|
|||
|
|
|||
|
But once you run real infrastructure on it?
|
|||
|
|
|||
|
Fuck Docker.
|