Podman

Replacing docker.sock in podman

Install podman-docker

sudo dnf install podman-docker

Run 'sock' in separate terminal (in -t 0 to forever keep it on)

podman system service -t 0

Use this variable instead of the docker.sock

-v $XDG_RUNTIME_DIR/podman/podman.sock:/var/run/docker.sock

Running this without podman system service -t 0 will cause the error: no such file or directory

Communicate between containers

Create pod, with --pod new:PODNAME . Must add ports when pod is created via -p 3000:3000 or -p 5000-6000 for a range of ports

podman run -d -p 3000:3000 -p 5000:5000 -e "DEFAULT_LAUNCH_ARGS=[\"--window-size=1366,768\"]" --pod new:podchangedetection --restart unless-stopped --shm-size="2g" browserless/chrome:1.53-chrome-stable

podman run -d --pod podchangedetection --restart always -e PLAYWRIGHT_DRIVER_URL="ws://127.0.0.1:3000/?stealth=1&--disable-web-security=true" -v /home/$USER/changedetection/datastore:/datastore --name changedetection.io dgtlmoon/changedetection.io

"SHELL is not supported for OCI image format" when building with podman

Need to add --format docker

podman build --format docker -t my-docker-container .

Login to docker.io to push containers to docker hub

podman login docker.io

Allow container to use Host network (UNSAFE FOR PRODUCTION)

Important part is --network=host, this line itself will open a docker container at your current directory and has neovim, node, rust, libssl-dev and my plugins preinstalled

podman run -it --rm -v $PWD/:/workdir --network=host gianpdev/neovim-rust-docker

Setting volume on containers in windows

//d is the drive letter and folders are separated by / instead of \

podman run -it --rm -v //d/dev/folder:/workdir neovim_rust_docker

Install Podman with Nvidia on Fedora (tested on Fedora 36)

From: https://blog.shawonashraf.com/nvidia-podman-fedora-34

sudo rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm; sudo rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm; sudo dnf update -y

Install correct drivers: https://rpmfusion.org/Howto/NVIDIA
Then reboot sudo reboot

Install podman if it isn't already installed:

sudo dnf install podman

Check CUDA version (mine was CUDA Version: 11.7):

nvidia-smi

Check for latest distribution here: https://nvidia.github.io/nvidia-container-runtime/

Set distribution value to the latest one

distribution=rhel9

Download and install repo:

curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.repo | sudo tee /etc/yum.repos.d/nvidia-container-runtime.repo

Install nvidia container runtime

sudo dnf install nvidia-container-runtime

change no-cgroups to true: no-cgroups = true

sudo vi /etc/nvidia-container-runtime/config.toml

Running a container with gpu:

podman run -it --rm --security-opt=label=disable nvidia/cuda:11.7.0-runtime-ubuntu20.04 nvidia-smi

This should return the same info as running nvidia-smi on your own pc

--security-opt=label=disable

This is used to avoid selinux from blocking the gpu

UNSOLVED centos 7 issues (rootless podman)

Main issue just might be that the repo version is 1.6.4-32 vs AlmaLinux 8's version is 4.1.1

subid error

ERRO[0000] cannot find mappings for user $USER: No subuid ranges found for user "$USER" in /etc/subuid

sudo vi /etc/subuid
sudo vi /etc/subgid
$USER:10000:65536
$USER:10000:65536
podman system migrate
#sudo usermod --add-subuids 10000-65536 $USER
#sudo usermod --add-subgids 10000-65536 $USER

#sudo usermod doesn't work properly

TODO systemd user slice session scope error

Error: stat /sys/fs/cgroup/systemd/user.slice/user-1002.slice/session-14785.scope: permission denied

id
#output
uid=1002($USER) gid=1002($USER) groups=1002($USER),10(wheel)
sysctl -a | grep namespaces
# output
user.max_ipc_namespaces = 2147483647
user.max_mnt_namespaces = 2147483647
user.max_net_namespaces = 2147483647
user.max_pid_namespaces = 2147483647
user.max_user_namespaces = 2147483647
user.max_uts_namespaces = 2147483647
# note that user.max_cgroup_namespaces is not here
df -h
# output
Filesystem         Size  Used Avail Use% Mounted on
/dev/ploop40336p1  3.9G  2.0G  1.8G  54% /
none               128M     0  128M   0% /sys/fs/cgroup
none               128M     0  128M   0% /dev
tmpfs              128M   84K  128M   1% /dev/shm
tmpfs              128M  128K  128M   1% /run
tmpfs               26M  8.0K   26M   1% /run/user/1002
# note that /sys/fs/cgroup is none

rebooting seems to have removed the error

sudo reboot

move on to the next error

Error unmounting when running container

Error:

ERRO[0031] error unmounting /home/$USER/.local/share/containers/storage/overlay/6de19278027571121d68fb2cc4240004eaf4cbec8b9e6985162484a3e79aa2ec/merged: invalid argument 
Error: error mounting storage for container 1e79aeeb6f9fd30cd4401876c7aec136e459fdc2cbe35c1c0407cf7d626544bc: error creating overlay mount to /home/$USER/.local/share/containers/storage/overlay/6de19278027571121d68fb2cc4240004eaf4cbec8b9e6985162484a3e79aa2ec/merged: using mount program /usr/bin/fuse-overlayfs: fuse: device not found, try 'modprobe fuse' first
fuse-overlayfs: cannot mount: No such file or directory
# tried
sudo yum install fuse-libs
# doesn't work, trying reboot
Still same error

enabled fuse in VPS provider's UI, rebooted both from terminal and VPS provider UI, still didn't mount.

# tried
modprobe fuse

Reinstalling VPS might be required.
Error went away after reinstall VPS with fuse enabled

slirp4netns failed

Error: slirp4netns failed: "open(\"/dev/net/tun\"): No such file or directory\nWARNING: Support for sandboxing is experimental\nchild failed(1)\nWARNING: Support for sandboxing is experimental\n"

Apparently requires TUN/TAP driver to be enabled (which is also an option on the VPS provider's UI)

This seems to remove that slirp4netns failed

sudo setcap cap_net_admin=+pe $(which podman)
sudo setcap cap_net_admin=+pe $(which slirp4netns)

cannot write setgroups file

Error: could not get runtime: cannot write setgroups file: open /proc/468/setgroups: permission denied

Cannot run podman run -d --restart always -p 5000:5000 -v /home/$USER/changedetection/datastore:/datastore --network=host --name changedetection.io dgtlmoon/changedetection.io
Which was working previously, same error as above
I ran this, which caused the issues

sudo setcap cap_net_admin=+pe $(which podman)

unset by:

sudo setcap -r $(which podman)

get cap status (output will be literally nothing if nothing is set)

getcap $(which podman)
getcap $(which slirp4netns)

getting podman > slirp4netns failed again

Note: tried sudo podman and it worked
reinstalled centos 7 again
ran:

sudo setcap cap_net_admin=+pe $(which slirp4netns)
#added to /etc/subuid /etc/subgid
$USER:10000:65536
sudo rm /dev/net/tun
sudo mknod /dev/net/tun c 10 200
sudo chmod 0666 /dev/net/tun
modprobe tun
sudo reboot
modprobe tun
sudo modprobe tun

Doesn't work. Spent too much time on this. Avoid renting VPS with only CentOS 7 installs allowed.