Live data from Hacker News

Fly To Podman: a script that will help you to migrate from Docker

github.com

121–130 of 152 posts

Re: Fly To Podman: a script that will help you to migrate from Docker

#121
post #100

Earlier quoted context omitted.

Im fully on board with the idea that root daemons shouldnt be necessary I just dont want systemd to become a dependency for yet again something else it shouldnt be a dependency for.

Podman runs on FreeBSD without systemd, so there you go.

yeah, it runs fine without systemd, until you need a docker compose substitute and then you get told to use quadlets (systemd), podman compose (neglected and broken as fuck) or docker compose (with a daemon! also not totally compatible) or even kubernetes...

Re: Fly To Podman: a script that will help you to migrate from Docker

#124

Does Podman have a swarm counterpart, or does running services still effectively require configuring systemd and then switching to kubernetes for multi-machine?

It doesn't, which to me seems like a bummer.

Docker Compose is really great for multi-container deployments on a single machine. And Docker Swarm takes that same Compose specification (although there were historical differences) and brings it over to clusters, all while remaining similarly simple. I'm surprised that ourside of Docker Swarm, Nomad or lightweight Kubernetes distros like K3s there haven't been that many attempts at simple clustering solutions. Even then, Kubernetes (which Podman supports) ends up being more complex.

Re: Fly To Podman: a script that will help you to migrate from Docker

#126
post #83
post #26

Last year I transitioned all of my personal projects to use podman. The biggest surface area was converting CI to use podman to build my docker files, but also changed out tooling to use it (like having kind use it instead of docker). For the most part this worked without issue. The only snag I ran into was my CI provider can't use oci formatted images. Podman lets you select the format of image to build, so I was ab…

I would love to know more details about your CI setup. I'm running all of my self-hosted services as Quadlets (which I generally really love!) and CI (using Gitea) was/is a huge pain point.

I do a lot of self hosting as well and relegated to git post receive hook that sends events through https://pipe.pico.sh and then have a script that listens on that topic and builds what I need.

Re: Fly To Podman: a script that will help you to migrate from Docker

#128
post #117

Earlier quoted context omitted.

Exactly my point. Today I can run docker rootless and in that case can leverage compose in the same manner. Is it the default? No, you've got me there. SystemD runs as root. It's just ironic given all the hand waving over the years. And Docker, and all it's tooling, are so ubiquitous and well thought out that Podman and friends are literally a reimplementation which is the selling point. I've used Podman. It's fine.…

> And Docker, and all it's tooling, are so ubiquitous and well thought out that Podman and friends are literally a reimplementation which is the selling point I would argue that Docker’s tooling is not well thought out, and that’s putting it mildly. I can name many things I do not like about is, and I struggle to find things I like about it’s tooling. Podman copied it, which honestly makes me not love podman so much.…

Curious what your point is?

> I can name many things I do not like about is, and I struggle to find things I like about it’s tooling.

Please share.

Re: Fly To Podman: a script that will help you to migrate from Docker

#129

Earlier quoted context omitted.

Exactly my point. Today I can run docker rootless and in that case can leverage compose in the same manner. Is it the default? No, you've got me there. SystemD runs as root. It's just ironic given all the hand waving over the years. And Docker, and all it's tooling, are so ubiquitous and well thought out that Podman and friends are literally a reimplementation which is the selling point. I've used Podman. It's fine.…

systemd runs as root yes, but services started by systemd dont unless you instruct them to. that means your podman containers dont run as root unless you want them to. mine runs as user services

I don't see your point. This is exactly how Docker works. Containers that are running when instantiated from the Docker daemon don't need to be run as root. But you can... Just like your containers started from SystemD (quadlet).

I run all my containers, when using Docker, as non-root. So where is the upside other than where your trust lies?

Re: Fly To Podman: a script that will help you to migrate from Docker

#130
post #117

Earlier quoted context omitted.

> And Docker, and all it's tooling, are so ubiquitous and well thought out that Podman and friends are literally a reimplementation which is the selling point I would argue that Docker’s tooling is not well thought out, and that’s putting it mildly. I can name many things I do not like about is, and I struggle to find things I like about it’s tooling. Podman copied it, which honestly makes me not love podman so much.…

Curious what your point is? > I can name many things I do not like about is, and I struggle to find things I like about it’s tooling. Please share.

Off the top of my head:

FROM [foo]: [foo] is a reference that is generally not namespaced (ubuntu is relative to some registry, but it doesn't say which one) and it's expected to be mutable (ubuntu:latest today is not the same as ubuntu:latest tomorrow).

There are no lockfiles to pin and commit dependency versions.

Builds are non-reproducible by default. Every default represents worst practices, not best practices. Commands can and do access the network. Everything can mutate everything.

Mostly resulting from all of the above, build layer caching is basically a YOLO situation. I've had a build result in literally more than a year out-of-date dependencies because I built on a system that hadn't done that particular build for a while, had a layer cached (by name!), and I forgot to specify a TTL when I ran the build. But, of course, there is no correct TTL to specify.

Every lesson that anyone in the history of computing has ever learned about declarative or pure programming has been completely forgotten by the build systems.

Why on Earth does copying in data require spinning up a container?

Moving on from builds:

Containers are read-write by default, not read-only.

Things that are logically imports and exports do not have descriptive names. So your container doesn't expose a web service called 'API'; it exposes port 8000. And you need to remember it, and if the image changes the port, you lose, and there is no good way for the tooling to help. Similarly, volumes need to be bound to paths, and there is nothing resembling an interface definition to help get it right. And, since containers are read-write by default, typoing a mount path results in an apparently working container that loses data.

The tooling around what constitutes a running container is, to me, rather unpleasant. I can't make a named group of services, restart them, possibly change some of the parts that make them up, and keep the same name in a pleasant manner. I can 'compose down' and 'compose up' them and hope I get a good state. Sometimes it works. And the compose files and quadlets are, of course, not really compatible with each other, nor are they compatible with Kubernetes without pulling teeth.

I'm sure I could go on.

Post reply on HN