Перейти к содержанию

Установка docker без суперпользователя

В этой заметке я опишу минимально необходимые действия для установки и использования docker без прав суперпользователя. Информация в этой заметке основана на официальной документации, но сильно сжата. Поэтому если у вас что-то не получается, возможно ваша конфигурация системы отличается от моей и в таком случае обратитесь к полной документации и внимательно изучите ее.

Предварительные условия

Все написанное выше работает на только что установленной ОС Debian 12 в VirtualBox.

Установите дополнительные пакеты:

apt install rootlesskit curl iptables dbus-user-session

Доступ к Интернет через прокси

Если вы используете прокси для работы curl создайте переменную среды:

export https_proxy="http://proxy_username:proxy_password@proxy_address:proxy_port"

Запустите модуль nf_tables:

modprobe nf_tables

Загрузите и выполните скрипт установки:

curl -fsSL https://get.docker.com/rootless | sh

После этого, исполняемые файлы docker будут находиться в директории ~/bin.

systemctl --user daemon-reload
systemctl --user start docker.service
systemctl --user enable docker.service
sudo loginctl enable-linger $(whoami)

Если docker должен подключаться к Интернет через прокси, отредактируйте файл конфигурации ./.config/systemd/user/target.default, добавив в раздел [Services] строки:

Environment="HTTP_PROXY=http://proxy_username:proxy_password@proxy_address:proxy_port"
Environment="HTTPS_PROXY=http://proxy_username:proxy_password@proxy_address:proxy_port"
Environment="NO_PROXY=localhost,127.0.0.1"

Перезапустите службу:

systemctl --user restart docker.service

По-умолчанию, в режиме rootless вы не сможете пробросить порт со значением менее 1024 к контейнеру. Чтобы обойти это, отредактируйте /etc/sysctl.conf и добавьте в него значение:

net.ipv4.ip_unprivileged_port_start=0

После этого перезапустите службы:

sudo sysctl --system

Для удобства, добавьте путь к исполняемым файлам docker в переменную $PATH, добавив в ~/.profile строку:

PATH="$HOME/bin:$PATH"

Дополнительно, можно установить docker-compose:

wget https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m) -O $HOME/bin/docker-compose

chmod +x $HOME/bin/docker-compose