I'd love to get the benefits of Docker without the battery drain and the Docker software, but I'm not sure if Podman would help much with either.
Edit: .. because the runner is not needing to run as root
The Podman ecosystem has given me a strong disliking of the Docker ecosystem, so I'm also rooting for it.
I use Drone, but instead of using the Docker plugin I start a detached (background) Caddy server to work as a proxy to DOCKER_HOST. That lets me proxy to the local Docker socket to take advantage of caching, etc. while I'm iterating, but gives the option of spinning up docker-in-docker to get a clean environment, without any caching, and running a slower build that virtually identical to what happens on the CI server.
I find that having the daemon available solves a ton of issues that most of the CI provided builder plugins have. For example, with the builder plugins I'd always end up with a step like build-and-tag-and-push which didn't work very well for me. Now I can run discreet build steps like build, test, tag, push and it feels far more intuitive, at least to me.
But Compose doesn’t mesh well with the overall NixOS configuration system. So I ended up building a custom tool that can convert your existing Compose project into a NixOS config.
Past versions of podman were flaky, but since version 4, which is now a couple of years old, I haven't had any issues whatsoever. I'd recommend anyone using containers on linux to try it out instead of installing docker out of habit.
Note that Linux allows you to mount overlay within a user namespace if you are root within the user namespace.
In other words, if you are root within a container; even though it is not root on the host; Linux accepte ton mount overlay filesystems (most filesystems are not allowed). `man user_namespace`
podman system reset
The Linux kernel only gained unprivileged overlay recently. Kernel fuse and fuse-overlay are incompatible so you need to wipe everything.You may need to set
[storage]
driver = "overlay"
in storage conf as well.https://docs.podman.io/en/stable/markdown/podman-system-rese...
[0]: https://docs.docker.com/reference/cli/docker/#environment-va...
[1]: https://podman-desktop.io/docs/migrating-from-docker/using-t...
Is that "docker-compose" (with a dash) or "docker compose" (with a space)?
See ref: https://docs.docker.com/compose/install/#scenario-two-instal...
On the other:
> The Docker compose CLI plugin has no stable output format (see for example https://github.com/docker/compose/issues/10872 ), and for the main operations also no machine friendly output format. The module tries to accomodate this with various version-dependent behavior adjustments and with testing older and newer versions of the Docker compose CLI plugin. Currently the module is tested with multiple plugin versions between 2.18.1 and 2.23.3. The exact list of plugin versions will change over time. New releases of the Docker compose CLI plugin can break this module at any time.
No root necessary :)
I wanted to say something funny about "rooting" and "rootless", but it's probably too silly. :)
And assuming my own comment is high up, this is the env variable we automatically load:
> DOCKER_HOST=unix:///run/user/1000/podman/podman.sock
Also networking in rootless containers still suck.
The end result is just go bakc to docker with less hassle and better stability.
We've been using it for a couple of years running and managing hundreds of containers per server - no feeling of flakiness whatsoever. It's virtually zeroconf and even supports GPUs for those who need it. It's like docker but better, IMO.
Hope it gets a popularity boost from CNCF. Rooting for it.