Podman
Podman is a daemonless container engine to run OCI containers. It is notably able to run containers in rootless mode. For a lot of simple use case, it is a drop-in replacement to Docker (alias docker=podman).
It does not support BuildKit as far as I know.
Debian Bullseye
As of Feb 8th 2023, the Debian packages for Debian Buster are outdated and have some breakage. Among others, having containers to reach each others via a DNS lookup does not work out of the box. One has to install golang-github-containernetworking-plugin-dnsname and dnsmasq-base. Then the need to add a symbolic link: ln -s /usr/lib/dnsname /usr/lib/cni/dnsname debian #985548 and debian #985549.
Random notes:
For docker-compose use the version 2 (v1 is end of life):
sudo apt install -y docker-compose-plugin
sudo sudo ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/docker-compose
Boot up a podman service which emulates the Docker daemon. The systemd unit can be run as a normal user and podman will then yields rootless containers:
sudo systemctl --user start podman
It listens on a socket at $XDG_RUNTIME_DIR/podman/podman.sock which upon receiving traffic will spawn podman system service. I had some issue with the socket vanishing due to a poor interaction with Podman and the systemd podman.socket. Apparently resolved by installing the latest version of Podman manually.
Or maybe I had to instruct the service to not deal with the socket by passing --time=0
Then set in your env:
export DOCKER_HOST="unix://$XDG_RUNTIME_DIR/podman/podman.sock"
And you can use docker-compose
Install from source
Upstream has a list of installation methods one being building from sources.