2.7 KiB
Using Podman instead of Docker
Podman has an Docker API compatibility layer. k3d uses the Docker API and is compatible with Podman v4 and higher.
!!! important "Podman support is experimental" k3d is not guaranteed to work with Podman. If you find a bug, do help by filing an issue
Using Podman
Ensure the Podman system socket is available:
sudo systemctl enable --now podman.socket
# or sudo podman system service --time=0
To point k3d at the right Docker socket, create a symbolic link:
sudo ln -s /run/podman/podman.sock /var/run/docker.sock
# or install your system podman-docker if available
sudo k3d cluster create
Alternatively, set DOCKER_HOST
when running k3d:
export DOCKER_HOST=unix:///run/podman/podman.sock
export DOCKER_SOCK=/run/podman/podman.sock
sudo --preserve-env=DOCKER_HOST --preserve-env=DOCKER_SOCK k3d cluster create
Using rootless Podman
Ensure the Podman user socket is available:
systemctl --user enable --now podman.socket
# or podman system service --time=0
Set DOCKER_HOST
when running k3d:
XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/run/user/$(id -u)}
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock
export DOCKER_SOCK=$XDG_RUNTIME_DIR/podman/podman.sock
k3d cluster create
Using remote Podman
Start Podman on the remote host, and then set DOCKER_HOST
when running k3d:
export DOCKER_HOST=ssh://username@hostname
export DOCKER_SOCK=/run/user/1000/podman/podman.sock
k3d cluster create
Creating local registries
Because Podman does not have a default "bridge" network, you have to specify a network using the --default-network
flag when creating a local registry:
k3d registry create --default-network podman mycluster-registry
To use this registry with a cluster, pass the --registry-use
flag:
k3d cluster create --registry-use mycluster-registry mycluster
!!! note "Incompatibility with --registry-create
"
Because --registry-create
assumes the default network to be "bridge", avoid --registry-create
when using Podman. Instead, always create a registry before creating a cluster.
!!! note "Missing cpuset cgroup controller"
If you experince an error regarding missing cpuset cgroup controller, ensure the user unit xdg-document-portal.service
is disabled by running systemctl --user stop xdg-document-portal.service
. See this issue