• Stars
    star
    243
  • Rank 166,489 (Top 4 %)
  • Language
    Dockerfile
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

static podman binaries and container image

podman binaries and container images GitHub workflow badge

This project provides alpine-based podman container images and statically linked (rootless) podman binaries for linux/amd64 and linux/arm64/v8 machines along with its dependencies (without systemd support):

Container image

The following image tags are supported:

Tag Description
latest, <VERSION> podman with both rootless and rootful dependencies: runc, conmon, fuse-overlayfs, slirp4netns, CNI plugins, catatonit.
minimal, <VERSION>-minimal podman, crun, fuse-overlayfs and conmon binaries, configured to use the host's existing namespaces (low isolation level).
remote, <VERSION>-remote the podman remote binary.

By default containers are run as user root. However the podman (uid/gid 1000) user can be used instead for which also a subuid/gid mapping is configured with the image (as described within the binary installation section below).

Please note that, when running non-remote podman within a docker container, the docker container needs to be --privileged.

Container usage example

Run podman in docker:

docker run --privileged -u podman:podman mgoltzsche/podman:minimal docker run alpine:latest echo hello from nested container

Within the container docker is linked to podman to support applications that use the docker command.

Binary installation on a host

In case you're using an arm64 machine (e.g. a Raspberry Pi), you need to substitute "amd64" with "arm64" within the commands below to make the installation work for you.

Download the statically linked binaries of podman and its dependencies:

curl -fsSL -o podman-linux-amd64.tar.gz https://github.com/mgoltzsche/podman-static/releases/latest/download/podman-linux-amd64.tar.gz

Verify the archive's signature (optional):

curl -fsSL -o podman-linux-amd64.tar.gz.asc https://github.com/mgoltzsche/podman-static/releases/latest/download/podman-linux-amd64.tar.gz.asc
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys 0CCF102C4F95D89E583FF1D4F8B5AF50344BB503
gpg --batch --verify podman-linux-amd64.tar.gz.asc podman-linux-amd64.tar.gz

This may fail every now and then due to desync/unavailable key servers. In that case please retry.

Download a specific version:

VERSION=<VERSION>
curl -fsSL -o podman-linux-amd64.tar.gz https://github.com/mgoltzsche/podman-static/releases/download/$VERSION/podman-linux-amd64.tar.gz

Install the binaries and configuration on your host after you've inspected the archive:

tar -xzf podman-linux-amd64.tar.gz
sudo cp -r podman-linux-amd64/usr podman-linux-amd64/etc /

If you have docker installed on the same host it might be broken until you remove the newly installed /usr/local/bin/runc binary since older docker versions are not compatible with the latest runc version provided here while podman is also compatible with the older runc version that comes e.g. with docker 1.19 on Ubuntu.

To install podman on a host without having any root privileges, you need to copy the binaries and configuration into your home directory and adjust the binary paths within the configuration correspondingly. For more information see podman's rootless installation instructions.

Host configuration

The following binaries should be installed on your host:

  • iptables
  • nsenter
  • uidmap (for rootless mode)

In order to run rootless containers that use multiple uids/gids you may want to set up a uid/gid mapping for your user on your host:

sudo sh -c "echo $(id -un):100000:200000 >> /etc/subuid"
sudo sh -c "echo $(id -gn):100000:200000 >> /etc/subgid"

Please make sure you don't add the mapping multiple times.

To support applications that use the docker command you may want to link it to podman as follows:

sudo ln -s /usr/local/bin/podman /usr/local/bin/docker

Before updating binaries on your host please terminate all corresponding processes.

Restart containers on boot

To restart containers with restart-policy=always on boot, enable the podman-restart systemd service:

systemctl enable podman-restart

Binary usage example

podman run alpine:latest echo hello from podman

Default persistent storage location

The default storage location depends on the user:

  • For root storage is located at /var/lib/containers/storage.
  • For unprivileged users storage is located at ~/.local/share/containers/storage.

Local build & test

make images test

More Repositories

1

khelm

A Helm chart templating CLI, kustomize plugin and containerized kustomize/kpt KRM function
Go
118
star
2

ctnr

rootless runc-based container engine - deprecated in favour of podman
Go
33
star
3

rkt-compose

CLI to run Docker Compose file as pod on rkt with integrated service discovery using Consul - EOL
Go
25
star
4

slirp-cni-plugin

A user-mode network ("slirp") CNI plugin - container networking for unprivileged users
Go
17
star
5

jenkins-jnlp-slave

A jenkins JNLP slave with podman to provide rootless docker CLI support
Shell
16
star
6

beets-autogenre

beets plugin to auto-detect the genre for each item within your music library
Python
7
star
7

beets-ytimport

A beets plugin to import music from Youtube and SoundCloud
Python
5
star
8

image-registry-operator

A kubernetes operator that manages image registries and access to them (alpha)
Go
4
star
9

kubemate

Experimental k3s-based Kubernetes distribution for IoT (alpha)
Go
3
star
10

hydra-spring-oauth2

oauth2 sample: ory hydra identity provider & spring boot resource server
Java
3
star
11

k8spkg

A Kubernetes component lifecycle manager CLI (deprecated in favour of kpt)
Go
3
star
12

fa-pap-xml-interpreter

A GUI and interpreter for the german tax office's program flow format. https://mgoltzsche.github.io/fa-pap-xml-interpreter/
HTML
2
star
13

mopidy-container

An opinionated, containerized mopidy bundle for Kubernetes
Shell
2
star
14

beets-webrouter

A Beets plugin to serve multiple web apps using a single process on the same port, each under a different path
Python
2
star
15

conventional-release

A GitHub Action to automate releases based on Conventional Commits
Shell
2
star
16

k8storagex

host path and layered cache file system provisioner for distributed (CI) jobs on Kubernetes (alpha)
Go
2
star
17

liteide-docker

LiteIDE containerized: A fast reproducible Go development environment
Dockerfile
2
star
18

essentia-container

Docker container to retrieve musical information from audio data using Essentia extractors
Dockerfile
1
star
19

gpg-helper

Letters instead of postcards! This little GnuPG 2 wrapper script helps you use PGP
Shell
1
star
20

kustomizr

kpt function container image to run kustomize builds
Go
1
star
21

hifiberry-detector

Containerized detect-hifiberry script from hifiberry-os (alpha)
Makefile
1
star
22

nodehack

A container image and DaemonSet to configure a host (for dev purposes)
Shell
1
star
23

runc-compose

CLI to compose runc containers
Go
1
star
24

beets-webm3u

A Beets plugin to serve M3U playlists via HTTP
Python
1
star
25

beets-container

An opinionated, containerized beets distribution
Makefile
1
star
26

highfipi

An SD card image to run Raspberry Pi based wireless Hifi speakers for multi-room audio
Makefile
1
star
27

coreos-setup

CoreOS setup for hetzner server
Shell
1
star
28

ktransform

Experimental K8s CRD and controller to transform Secrets and ConfigMaps using jq queries
Go
1
star
29

wifi-manager

Wifi manager linux container for a SoC/Raspberry Pi
Dockerfile
1
star
30

algorythm-cms

An old collection of experimental CMS modules - only valueable: a Maven plugin to build XAR packages
XSLT
1
star
31

file-service

Service to share and browse files using a JS UI and WebDAV based on nginx
JavaScript
1
star
32

beets-websearch

Python
1
star
33

stable-diffusion-container

Experimental stable diffusion linux container image (early alpha)
Makefile
1
star
34

mopidy-webm3u

A Mopidy extension for reading M3U playlists from an HTTP server
Python
1
star
35

kustomizations

My playground of kustomize-based Kubernetes components
Shell
1
star