Skip to content

afbjorklund/podman-full

Repository files navigation

Build script for building https://github.com/containers/podman

  • conmon

  • crun

  • netavark

  • catatonit

Installed files for podman-full, excluding documentation:


Build script adapted from https://github.com/containerd/nerdctl

  • containerd

  • runc

  • cni-plugins

  • tini

Installed files for nerdctl-full, excluding documentation:


Building

The default make target will build an image, and export it.

You can set which engine to use, with the DOCKER variable.

Installation

Normally in lima, the archive is just extracted on the lima:

sudo tar Cxzf /usr/local nerdctl-full.tgz

Dependencies

Some dependencies are required, with sudo apt install.

Configuration

You are required to add a /etc/containers/registries.conf.

Error: [...] no containers-registries.conf(5) was found

As well as /etc/containers/policy.json configuration file.

Error: open /etc/containers/policy.json: no such file or directory

Shortnames

You might also want to add a shortnames.conf configuration:

/etc/containers/registries.conf.d/000-shortnames.conf

Otherwise you will get an interactive question, such as:

? Please select an image:
  ▸ docker.io/library/alpine:latest
    quay.io/alpine:latest

User Session

Need to make sure to have newuidmap and a dbus session.

exec: "newuidmap": executable file not found in $PATH
WARN[0000] The cgroupv2 manager is set to systemd
           but there is no systemd user session available
WARN[0000] Falling back to --cgroup-manager=cgroupfs

They are available as packages, but needs to be started.

sudo apt-get install -y uidmap dbus-user-session
systemctl --user enable --now dbus

Networking

Need to install iptables, for network namespaces.

sudo apt-get install -y iptables

Testing

Template based on debian:

Assuming that lima is installed, and archive is built:

mkdir -p /tmp/lima
cp policy.json registries.conf podman-full-4.9.3-linux-amd64.tar.gz /tmp/lima
limactl start ./lima.yaml
export LIMA_INSTANCE=lima

lima sudo mkdir /etc/containers
lima sudo cp /tmp/lima/policy.json /tmp/lima/registries.conf /etc/containers
lima sudo tar Cxzf /usr/local /tmp/lima/podman-full-4.9.3-linux-amd64.tar.gz
lima systemctl --user enable --now podman.socket

After that, you can add forwarding of the podman.sock:

portForwards:
- guestSocket: "/run/user/{{.UID}}/podman/podman.sock"
  hostSocket: "{{.Dir}}/sock/podman.sock"

And run podman remotely:

podman.lima version

You can also run it locally:

lima podman version