this post was submitted on 12 Sep 2023
2 points (100.0% liked)

Container platforms (docker, lxc, podman)

311 readers
3 users here now

A place to discuss everything related to Container platforms and runtimes. Docker, LXC, Podman, OpenShift, OCI, and more.

founded 1 year ago
MODERATORS
 

On Linux, thr best package type for a portable application is an AppImage since all the dependances are inside the AppImage, its all in one file and can run on any linux distro.

On Android, you dan download an APK and install it manually which is the closest thing to a portable Android app.

Therefore, in the service/server self hosting world. Are containers (docker/podman images) the equivalent to a portable executable of a service? AppImages downside is its size since all the dependancies are bundle with it. Containers not only bundle its dependnacies but the OS to run run them. For a stable, low incompatibility and low dependancy hell, are containers the way to go for portable services?

I know container images are not distributed as tar files often and mostly pulled from a registry, however they can be saved and loaded as portable tar files.

top 1 comments
sorted by: hot top controversial new old
[–] PriorProject 3 points 1 year ago

These kinds of super-general questions that try to box very powerful and flexible technologies into specific categories often don't really have a single useful answer, but more a series of more specific comparisons that can be useful in specific situations:

  1. Container ecosystems like Docker and Podman do package up executables and dependencies together... so yeah... they're definitely a useful format for delivering portable executables that can run on many distros. They're not the only option for that, though... flatpak, snap, appimage isn't popular for servers but it can be used that way.
  2. Docker and Podman aren't just images though. They provide runtime primitives for both sharing info across containers and for isolating containers from each other (and the host). Appimage doesn't do much at runtime. Flatpak and Snap do provide runtimes that do a lot of similar filesystem and maybe process isolation tricks but I don't think they provide the network namespacing that classic container runtimes provide.

All of which is to say... there's some overlap among the technologies you've described. Analyzing the tradeoffs between them is much eacher in the context of a specific use-case than the general case of "portable apps", which can mean very different things to different people.