Rootlesskit¶
Linux-native "fake root" for implementing rootless containers
Links:
Requirements¶
sudo apt update
sudo apt install -y uidmap
Installation¶
Install directly
mkdir -p ~/.local/bin
curl -sSL https://github.com/rootless-containers/rootlesskit/releases/download/v1.1.0/rootlesskit-$(uname -m).tar.gz | tar Cxzv ~/.local/bin
Check SHA256SUM
rm ~/Downloads/SHA256SUMS ~/Downloads/SHA256SUMS.asc
export URL=https://github.com/rootless-containers/rootlesskit/releases/download/v1.1.0/rootlesskit-$(uname -m).tar.gz
wget -P ~/Downloads $URL
export URL=https://github.com/rootless-containers/rootlesskit/releases/download/v1.1.0/SHA256SUMS
wget -P ~/Downloads $URL
export URL=https://github.com/rootless-containers/rootlesskit/releases/download/v1.1.0/SHA256SUMS.asc
wget -P ~/Downloads $URL
export FILE=~/Downloads/rootlesskit-$(uname -m).tar.gz
export HASHFILE=~/Downloads/SHA256SUMS
echo "$(grep $(uname -m) $HASHFILE | awk '{print $1}') $FILE" | sha256sum --check
mkdir -p ~/.local/bin
tar Cxzvf ~/.local/bin $FILE
Optional: cgroup v2¶
Source: [Optional] cgroup v2
Checking whether cgroup v2 is already enabled¶
If /sys/fs/cgroup/cgroup.controllers
is present on your system, you are using v2, otherwise you are using v1.
# check if cgroup v2 is already enabled
cat /sys/fs/cgroup/cgroup.controllers
Enabling cgroup v2¶
Enabling cgroup v2 for containers requires kernel 4.15 or later. Kernel 5.2 or later is recommended.
And yet, delegating cgroup v2 controllers to non-root users requires a recent version of systemd. systemd 244 or later is recommended.
To boot the host with cgroup v2, add the following string to the GRUB_CMDLINE_LINUX
line in /etc/default/grub
and then run sudo update-grub
.
systemd.unified_cgroup_hierarchy=1
For ubuntu on azure, you should add this in /etc/default/grub.d/50-cloudimg-settings.cfg
Enabling CPU, CPUSET, and I/O delegation¶
By default, a non-root user can only get memory
controller and pids
controller to be delegated.
cat /sys/fs/cgroup/user.slice/user-$(id -u).slice/user@$(id -u).service/cgroup.controllers
To allow delegation of other controllers such as cpu
, cpuset
, and io
, run the following commands:
sudo mkdir -p /etc/systemd/system/user@.service.d
cat <<EOF | sudo tee /etc/systemd/system/user@.service.d/delegate.conf
[Service]
Delegate=cpu cpuset io memory pids
EOF
sudo systemctl daemon-reload
Delegating cpuset
is recommended as well as cpu
. Delegating cpuset
requires systemd 244 or later.
After changing the systemd configuration, you need to re-login or reboot the host. Rebooting the host is recommended.