Podman 4.2.0
github.com
github.com
Technically every time I have tried to push it into my production workflow I've hit some snags, mostly around networking and some volume stuff but those snags are getting chipped away each release. The last time I did a strong test flight was around 3.X, so probably about time to try again, 4.0 was a big release.
I like the integration with systemd and bringing "pods" out of k8. I like the "they're just processes" philosophical perspective and more "linux tech" focus of the team - i.e. cgroups v2 exists, lets use it. I would like to see some minor UI stuff such as compressing buildah stage output like docker buildx does but it's understandable why that isn't there (yet?).
I think my only remaining quibble is getting true remote addresses when using rootless networking.
Socket activation of containers
Advantages:
- Faster network. Rootless Podman will run with native network speed. Normally rootless Podman runs with reduced network speed due to the performance penalty that comes from using slirp4netns.
- Improved security as you can disable the ability to establish outgoing connections with --network=none. The container can still communicate over the socket-activated socket with a client that has connected via the internet.
I contributed a Podman socket activation tutorial: https://github.com/containers/podman/blob/main/docs/tutorial...
and I wrote two blogs about the security advantages
https://www.redhat.com/sysadmin/socket-activation-podman
https://www.redhat.com/sysadmin/podman-systemd-limit-access
Docker does not support socket activation of containers. (Docker only supports socket activation of the Docker daemon)
Edit: A clarification about the network speed. The improved speed is about the communication that passes over the socket-activated socket. This communication does not pass through slirp4netns so it has the same performance characteristics as the normal network on the host.
Did they fix the IP propagation issue with Rootless networking ? It makes it largely useless when the Proxy is also a container.
on Docker you can force it to use Slirp, but its slow and doesn't support IPv6.
--net=slirp4netns:port_handler=slirp4netns
See https://github.com/containers/podman/discussions/10472#discu...
Shouldn't it also be possible to detect the source IP address if you use socket activation? (I haven't tried it out, though).
Regarding the other idea: I've now tested it and verified that it works. The remote address is available when running a socket-activated container with rootless Podman.
Docker the software is also funky.
Also interesting would be to fix the security considerations of using bypass4netns:
"However, it is probably possible to connect to host loopback IPs by exploiting TOCTOU of struct sockaddr * pointers."
There seems to be an implementation idea for how the problem could be fixed:
https://github.com/rootless-containers/bypass4netns/issues/2...
You'd think an entity the size of RedHat trying to take the reins from Docker would understand that this is an investment they have to make to make it a first-class replacement.
I also installed it on Windows to see how the WSL engine works but now it conflicts with my existing v3 Podman installation on Ubuntu 20.04 in WSLv2 so I guess I'm out of luck.
Also may be of interest to people here but Podman desktop had a release yesterday. It's pretty primitive and I couldn't get it to work to use my existing auth.json but it's there.
It was a pretty frustrating experience when all I wanted was to be able to "podman login" to a local repository so Jib would pull down base layers correctly.
If you want to test podman you 'll have better luck using an OS from the Fedora ecosystem where Red Hat has affiliations and is actively contributing.
Since you mentioned Windows I 'd suggest trying something like this [1] or this [2]
[1]: https://github.com/yosukes-dev/FedoraWSL [2]: https://github.com/WhitewaterFoundry/Fedora-Remix-for-WSL
Disclaimer. I am not using Windows to test above solutions anymore. More than a year ago I used [2] but from a casual look maybe [1] is better now.
Then if you want to can run `wsl -d podman-machine-default` to log into the distro as normal. You can also copy the distro, import/export/register it as usual if you want a clone unaffiliated with the podman package per se.
I assume that Podman Desktop does that but idk because I don't use it. Rancher Desktop also works this same way.
In all cases, the integration with existing distros happens inside the GUI app. Maybe I'll check tomorrow whether Podman Desktop offers comparable integration.
But yeah, it's a good integration to have because the native Windows CLI experience is still so impractical and clunky that many developers end up setting up a pet distro in WSL and pretty much living in it as their default terminal session. Good integration with cmd.exe or (pwsh.exe running under Windows Terminal, for that matter) is cool but it doesn't mean much to someone who does all their work in an Ubuntu WSL VM or whatever.
Sadly, some anti-cheat tools in games still refuse to work with WSL2 (they hate Hyper-V, I guess it's been used as attack vector), so back to VMware Player on my personal workstation and using terminal to open Linux shell.
I agree with them. I think Red Hat should be making effort to get podman working well in Ubuntu (well, Debian but would benefit Ubuntu). Although it's very possible that Red Hat is trying and have met resistance. Canonical wants for a very different direction and it wouldn't surprise me at all if they were throwing road blocks in the way (or at least, doing nothing to remove the road blocks).
More here: https://lists.fedoraproject.org/archives/list/legal@lists.fe...
It's because Fedora strives to be open-source and free software only. WSL isn't completely libre so they can't support it officially and neither is the Windows Store. There's third party Fedora images for WSL you can install.
https://lists.fedoraproject.org/archives/list/legal@lists.fe...
https://packages.debian.org/source/experimental/libpod
Some context/discussion and an experimental ppa for Ubuntu:
https://github.com/containers/podman/issues/14302#issuecomme...
Also, I was able to get it to work on Windows fine. Maybe try removing your existing install and creating a new one.
They used to provide relatively recent builds in their kubic repos. Unfortunately, for some reason, they decided to discontinue it[0]. They mentioned some CVEs or something in some issues raised around this, but to me that means pushing a new version/build and not discontinuing it.
Anyway, one of the members of the Containers org provides unstable kubic repos[1][2] for non RH systems. Unfortunately, this includes RCs, and non-stable versions, which is fine to get bleeding edge, but I'd rather just have the stable versions.
Due to the above, I've written some scripts to build deb packages for all the latest stable versions. So hopefully you can simply download the deb from GH releases[3] and then `dpkg -i *.deb && apt-get install -f`.
[0] https://podman.io/blogs/2022/04/05/ubuntu-2204-lts-kubic.htm...
[1] https://github.com/containers/podman/issues/14302#issuecomme...
[2] https://build.opensuse.org/project/show/devel:kubic:libconta...
You mean not aligning with Red Hat and what they're pushing on everyone else. Ubuntu is on a shorter release cycle compared to Debian so they're usually the first non-Red Hat distro with new stuff. Systemd vs Upstart, Unity vs GNOME (3?), etc.
They try to do new stuff, and there's nothing wrong with that. Not everyone should blindly follow RH's lead. Systemd was objectively shit at the beginning, run by a person who was actively hostile to any feedback he didn't like. There were multiple highly critical bugs whose patches weren't backported ('just update' as if it's that easy with the sprawling beast that is systemd).
> not properly testing packages
What do you mean? I only recall one popular instance of an issue with Ubuntu packages, and it's when they released a major upgrade to Samba because backporting a critical security fix to the previous major version, the one that came with the distro originally, was too hard (in their words), which ended up breaking Samba for a bunch of people.
Ubuntu isn't "flakey". It makes a different tradeoff compared to RHEL - slightly newer version of stuff for slightly less stability. For many orgs that's preferable to obsolete 10 year old versions of most software for amazing stability.
Talk about hyperboles. RHEL 8 is from 2018 and has had considerably more updates than Ubuntu 18.04. In fact some packages might even be newer than what is in 20.04.
Modules are much nicer to use than the previous software collection system because they actually replace the "original" package, so it's just a straight version upgrade without having to worry about fixing configuration files etc. if it's compatible.
There's a lot of flexibility in this to support both those that need newer versions of things as well as older stable versions, just be aware and choose and plan accordingly.
1: https://access.redhat.com/support/policy/updates/rhel-app-st...
Normally you could also grab the releases from the source directly and let the upstream source figure out compatibility for you. However, it seems like the folks over at Podman have discontinued their external repository, so I guess they don't care about bringing new versions to Ubuntu either.
Nah, red hat probaby cares very little about that.
Red hat probably cares about delivering the best it can for its users (red hat, centos and fedora users).
Podman probably has no explicit goal of replacing docker, it only has the goal of providing a workstation container management implementation. Which might happen to be an awesome substitute for docker.
Packaging is a distro problem, not an upstream one, though upstreams should of course work with distro maintainers to make packaging frictionless.
Just give them enough time and it will run in Ubuntu just fine.
Obviously it will happen after they get it feature complete on their own OS.
Given the amount of work need to achieve feature parity with docker (which I suppose Docker Inc tough was it's moat), they have no viable competition right now and so this strategy makes sense.
Ah shit, thanks for the heads up, I'm in the process of upgrading (actually, on a test snapshot) a client's Ubuntu 14.04 LTS to 22.04 LTS and migrating everything to containers running on podman.
Their IT department is crap so instead of creating a new VPS on top of RHEL or something and switching the DNS entry, I have to stay on Ubuntu Server, which I hate.
For context, it is a medium-sized (~40 devs) commodities trading company running some hundred applications in azure k8s but considering moving to on-prem k8s.
Where people frequently run into issues is when they want to utilize the rootless feature, and that definitely requires adjustments and work.
You'll need some configuration if you want to expose system ports (below 1024).
Haven’t done so myself yet, but rootless docker to podman ought to be more or less a direct switch
So defaulting to docker would be the less risky bet and relegate podman to opt-in by trailblazers.
Podman core development is impressive, so frustrating to see the broader ecosystem issues.
Things like storage or traffic routing become uncertain/hacky at best or at worst just straight up don’t work. I’ve literally seen many on-prem k8s deployments where there was no support for persistent volume claims because of storage - whether the enterprise storage solution wasn’t supported by k8s or because there was no way to guarantee storage (HDDs being a capital expense and therefore purchased ahead of time).
Examples of friction off the top of my head:
* storage - who knows if there’s actually enough space to provision and attach a volume
* exposing a service externally
* load balancers managed by a different team (such as networking) and their process or tech environment not setup to support k8s
* certificates need to be requested and signed by approved enterprise certificate authority
* network security restrictions - lengthy process for firewall change requests or similar to expose a service externally (also related to point above on certificates)
I’ve also seen silly deployments where k8s runs inside VMware virtual machines - why not just run k8s directly on hardware if on-prem? Virtual machines just add a ton of unnecessary and expensive overhead.Personally, my preferred way of doing k8s:
1. GKE (Google Kubernetes Engine) - the easiest and cheapest managed option
2. kops
Hot take here but I personally think EKS is convoluted and complicated as hell. I’ve not used AKS but in the past I’ve seen limitations such as network configuration that became problematic - couldn’t route traffic properly because IP space overlapped with corporate IP ranges already used by VPN and/or existing vnets, though it’s been a couple years since I first saw this specific example.
2. MetallB. Not sure how cert thing applies here…
3. vmware based vms are to manage underlying node image so that you dont have to mess with ipmi/ipxe that often. They can also make networking easier
In other words, if host UID 1000 runs a container that has UID 100, 101, 102 and they all write files to a mounted volume, it would be great if all file writes were attributed to the host UID of 1000.
Instead, if user namespaces are configured correctly they would attribute to UID 1000, 1001, 1002 on host.
Also maybe how different products (kubernetes, podman, docker) fit into this space?
Thanks in advance!
Trying to convince my team to use podman instead of docker (even though I've been using it myself primarily for months without issues), that's another story.
Also cool to see GitLab Runner support as the first feature mention.
„Error: podman: Failed to download resource „podman_bottle_manifest“
[1](https://github.com/containers/podman/tree/3d0100bb44834d079a...)
First, some software is updated frequently in RHEL, including podman. RHEL 8 was released in 2019 and it has podman 4.0.2 from earlier this year.
Second, even software that isn't updated often, or at all, in the base system might have newer releases available as modules. For example there are recent versions of Python in RHEL 8, with just the basic runtime so that you can use pip to install more packages.
Third, the RHEL kernel is updated much more than the corresponding LTS releases. The RHEL 8 kernel is closer to 5.15-ish than to the nominal 4.18 release from which it was forked. Pace for backports has slowed down a bit, but there's interest in keeping the kernel up to date because people are running RHEL 9 containers on the RHEL 8 kernel.
(Currently, there are 5 'container-tools' module streams listed, with podman versions including 1.0, 1.6, 3.0, 4.0 in stable streams, and 4.0.2 in the rolling stream.)