Distrobox: Difference between revisions
m Fixup |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 40: | Line 40: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== "potentially insufficient UIDs and GUIDs" error === | |||
When setting up containers that do not run as root | When setting up containers that do not run as root, as <code>podman</code> does by default, you may see an error along the following lines: (this example uses podman, lilipod has a different error) | ||
Line 52: | Line 52: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
adding the following to your config might help: | To fix it, adding the following to your config might help: | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> |
Latest revision as of 02:01, 7 January 2025
Distrobox offers you to use any linux distribution inside your terminal as a simple wrapper for Podman, Docker or Lilipod.
Setup
Distrobox uses Docker internally to fetch and run system images. Easily get started by enabling Podman with Docker-compatibility mode.
virtualisation.podman = {
enable = true;
dockerCompat = true;
};
environment.systemPackages = [ pkgs.distrobox ];
Usage
Setup container with latest Arch Linux image
# distrobox create --name archlinux --init --image archlinux:latest
Enter Arch Linux container
# distrobox enter archlinux
For further usage, please refer to the Distrobox documentation.
Tips and tricks
Using different architecture
Following example will run an Ubuntu container with a different architecture than the host, in this case arm64.
Add following line to your system configuration, apply it and then reboot the system.
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
Run a Debian container with arm64 architecture
sudo podman run --rm --privileged multiarch/qemu-user-static --reset -p yes
distrobox create -n debian --image arm64v8/debian
distrobox enter debian
"potentially insufficient UIDs and GUIDs" error
When setting up containers that do not run as root, as podman
does by default, you may see an error along the following lines: (this example uses podman, lilipod has a different error)
# distrobox create container
...
Error: copying system image from manifest list: writing blob: adding layer with blob ...:
unpacking failed (error: exit status 1;
output: potentially insufficient UIDs or GIDs available in user namespace (requested 1000:1000 for /home/container): Check /etc/subuid and /etc/subgid if configured locally and run "podman system migrate": lchown /home/container: invalid argument)
To fix it, adding the following to your config might help:
users.users.YOURUSERNAME = {
extraGroups = [ "podman" ];
subGidRanges = [
{
count = 65536;
startGid = 1000;
}
];
subUidRanges = [
{
count = 65536;
startUid = 1000;
}
];
};
Rebuild your system, run podman system migrate
, and try creating the distrobox container again.