This project does not need a dedicated image. It can use any OCI images from docker-hub, quay.io, or any registry of your choice.
Granted, they may not be as featureful as expected (some of them do not even have
which
, mount
, less
or vi
) but that's all doable in the container itself
after bootstrapping it.
The main concern is having basic Linux utilities (mount
), basic user management
utilities (usermod, passwd
), and sudo
correctly set.
distrobox
can run on either podman
or docker
It depends either on podman
configured in rootless mode
or on docker
configured without sudo (follow THIS instructions)
- Minimum podman version: 2.1.0
- Minimum docker version: 18.06.1
Follow the official installation guide here:
- https://podman.io/getting-started/installation
- https://docs.docker.com/engine/install
- https://docs.docker.com/engine/install/linux-postinstall/
Distrobox has been successfully tested on:
Distro | Version | Notes |
---|---|---|
Alpine Linux | 3.14 3.15 |
To setup rootless podman, look HERE |
Arch Linux | distrobox and distrobox-git are available in AUR (thanks M0Rf30!). To setup rootless podman, look HERE |
|
Manjaro | To setup rootless podman, look HERE | |
CentOS | 8 8 Stream 9 Stream |
distrobox is available in epel repos. (thanks alcir!) |
RedHat | 8 9beta |
distrobox is available in epel repos. (thanks alcir!) |
Debian | 11 Testing Unstable |
|
Fedora | 34 35 36 |
distrobox is available in default repos.(thanks alcir!) |
Fedora Silverblue/Kinoite | 34 35 36 |
distrobox is available in default repos.(thanks alcir!) |
Gentoo | To setup rootless podman, look HERE | |
Ubuntu | 18.04 20.04 21.10 |
Older versions based on 20.04 or earlier may need external repos to install newer Podman and Docker releases. Please follow their installation guide: Podman Docker Derivatives like Pop_OS!, Mint and Elementary OS should work the same. Now PPA available! (thanks michel-slm! |
EndlessOS | 4.0.0 | |
openSUSE | Tumbleweed MicroOS |
distrobox is available in default repos (thanks dfaggioli!) For Tumbleweed, do: zypper install distrobox . For MicroOS enter in a transactional update shell like this: tukit --continue execute /bin/bash (or transactional-update shell --continue , if you have transactional-update installed). Once inside: zypper install distrobox . Then exit the shell (CTRL+D is fine) and reboot the system. |
openSUSE | Leap 15.4 Leap 15.3 Leap 15.2 |
Packages are available here (thanks dfaggioli!). To install on openSUSE Leap 15.4, do: zypper addrepo https://download.opensuse.org/repositories/home:dfaggioli:microos-desktop/15.4/home:dfaggioli:microos-desktop.repo && zypper refresh && zypper install distrobox . For earlier versions, the procedure is the same, the link to the repository (i.e., the last argument of the zypper addrepo command) is the only thing that changes: Leap 15.3, Leap 15.2.Podman under SUSE Leap, cannot initialize correctly the containers managed by distrobox until this OpenSUSE bug is fixed, or podman loggin is configured properly. Docker can be used instead, but it is less secure because it does not work yet in rootless mode. |
SUSE Linux Enterprise Server | 15 Service Pack 4 15 Service Pack 3 15 Service Pack 2 |
Same procedure as the one for openSUSE (Leap, respective versions, of course). Use the following repository links in the zypper addrepo command: SLE-15-SP4, SLE-15-SP3, SLE-15-SP4. |
Void Linux | glibc | Systemd service export will not work. |
NixOS | 21.11 | Currently you must have your default shell set to Bash, if it is not, make sure you edit your configuration.nix so that it is. Also make sure to mind your executable paths. Sometimes a container will not have nix paths, and sometimes it will not have its own paths. Distrobox is available in Nixpkg collection (thanks AtilaSaraiva!)< To setup Docker, look HERE To setup Podman, look HERE and HERE |
If your container is not able to connect to your host xserver, make sure to
install xhost
on the host machine and run xhost +si:localuser:$USER
.
If you wish to enable this functionality on future reboots add it to your ~/.xinitrc
or somewhere else tailored to your use case where it would be ran on every startup.
Note also that in some distributions, root filesystem is not mounted as a shared mount, this will give an error like:
$ distrobox-enter
Error response from daemon: path /sys is mounted on /sys but it is not a shared or slave mount
Error: failed to start containers: ...
To resolve this, use this command:
mount --make-rshared /
To make it permanent, you can place it in /etc/rc.local
.
If your distro of choice is not on the list, open an issue requesting support for it, we can work together to check if it is possible to add support for it.
Or just try using it anyway, if it works, open an issue and it will be added to the list!
Distrobox guests tested successfully with the following container images:
Distro | Version | Images |
---|---|---|
AlmaLinux | 8 9 |
docker.io/library/almalinux:8 docker.io/library/almalinux:9 |
AlmaLinux (UBI) | 8 | docker.io/almalinux/8-base docker.io/almalinux/8-init |
Alpine Linux | 3.14 3.15 |
docker.io/library/alpine:latest |
AmazonLinux | 2 | docker.io/library/amazonlinux:2.0.20211005.0 |
AmazonLinux | 2022 | public.ecr.aws/amazonlinux/amazonlinux:2022 |
Archlinux | docker.io/library/archlinux:latest | |
ClearLinux | docker.io/library/clearlinux:latest docker.io/library/clearlinux:base |
|
CentOS | 7 | quay.io/centos/centos:7 |
CentOS Stream | 8 9 |
quay.io/centos/centos:stream8 quay.io/centos/centos:stream9 |
RedHat (UBI) | 7 8 |
registry.access.redhat.com/ubi7/ubi registry.access.redhat.com/ubi7/ubi-init registry.access.redhat.com/ubi7/ubi-minimal registry.access.redhat.com/ubi8/ubi registry.access.redhat.com/ubi8/ubi-init registry.access.redhat.com/ubi8/ubi-minimal |
Debian | 7 8 9 10 11 |
docker.io/debian/eol:wheezy docker.io/library/debian:8 docker.io/library/debian:9 docker.io/library/debian:10 docker.io/library/debian:stable docker.io/library/debian:stable-backports |
Debian | Testing | docker.io/library/debian:testing docker.io/library/debian:testing-backports |
Debian | Unstable | docker.io/library/debian:unstable |
Neurodebian | nd100 | docker.io/library/neurodebian:nd100 |
Fedora | 34 35 36 37 Rawhide |
registry.fedoraproject.org/fedora-toolbox:34 docker.io/library/fedora:34 registry.fedoraproject.org/fedora-toolbox:35 docker.io/library/fedora:35 docker.io/library/fedora:36 registry.fedoraproject.org/fedora:37 docker.io/library/fedora:rawhide |
Mageia | 8 | docker.io/library/mageia |
Opensuse | Leap | registry.opensuse.org/opensuse/leap:latest |
Opensuse | Tumbleweed | registry.opensuse.org/opensuse/tumbleweed:latest registry.opensuse.org/opensuse/toolbox:latest |
Oracle Linux | 7 8 |
container-registry.oracle.com/os/oraclelinux:7 container-registry.oracle.com/os/oraclelinux:8 |
Rocky Linux | 8 | docker.io/rockylinux/rockylinux:8 |
Scientific Linux | 7 | docker.io/library/sl:7 |
Slackware | 14.2 | docker.io/vbatts/slackware:14.2 |
Ubuntu | 14.04 16.04 18.04 20.04 21.10 22.04 |
docker.io/library/ubuntu:14.04 docker.io/library/ubuntu:16.04 docker.io/library/ubuntu:18.04 docker.io/library/ubuntu:20.04 docker.io/library/ubuntu:21.10 docker.io/library/ubuntu:22.04 |
Kali Linux | rolling | docker.io/kalilinux/kali-rolling:latest |
Void Linux | ghcr.io/void-linux/void-linux:latest-full-x86_64 ghcr.io/void-linux/void-linux:latest-full-x86_64-musl |
|
Gentoo Linux | rolling | You will have to Build your own to have a complete Gentoo docker image |
Note however that if you use a non-toolbox preconfigured image (e.g.
images pre-baked to work with https://github.com/containers/toolbox),
the first distrobox-enter
you'll perform
can take a while as it will download and install the missing dependencies.
A small time tax to pay for the ability to use any type of image. This will not occur after the first time, subsequent enters will be much faster.
NixOS is not a supported container distro, and there are currently no plans to bring support to it. If you are looking for unprivlaged NixOS environments, we suggest you look into nix-shell.
If your distro of choice is not on the list, open an issue requesting support for it, we can work together to check if it is possible to add support for it.
Or just try using it anyway, if it works, open an issue and it will be added to the list!
For older distributions like CentOS 5, CentOS 6, Debian 6, Ubuntu 12.04, compatibility is not assured.
Their libc
version is incompatible with kernel releases after >=4.11
.
A work around this is to use the vsyscall=emulate
flag in the bootloader of the
host.
Keep also in mind that mirrors could be down for such old releases, so you will need to build a custom distrobox image to ensure basic dependencies are met.