В разделе приведен пример установки Docker в режиме Rootless в операционной системе Ubuntu:
1.Выполните действия по подготовке к установке.
2.Создайте пользователя, от имени которого будет запускаться служба Docker.
3.Установите и настройте Docker в режиме Rootless.
4.Настройте работу Docker от имени созданного пользователя.
Примечание. Далее в примере указано, под какой учетной записью необходимо выполнять действия. Для переключения между учетными записями используйте отдельную сессию, не нужно переключаться между пользователями в контексте одной ssh-сессии.
1.На сервере, где планируется развернуть компоненты Docker, войдите в операционную систему под учетной записью с правами суперпользователя (root).
2.Обновите кэш пакетов. Для этого выполните команду:
sudo apt-get update
3.В режиме Rootless не используются двоичные файлы с битами SETUID. Исключение – файлы newuidmap и newgidmap. Они необходимы, чтобы в пространстве имен пользователя можно было использовать несколько UID/GID. Кроме того, простого сопоставления одного псевдокорневого UID/GID недостаточно для запуска контейнеров. Поэтому убедитесь в том, что:
•пакеты newuidmap и newgidmap установлены через пакет uidmap. Чтобы установить пакет, выполните команду:
sudo apt-get install uidmap
•имеется 65 536 дочерних (подчиненных) идентификаторов в файлах: /etc/subuid – идентификаторы пользователей, /etc/subgid – идентификаторы групп пользователей.
4.Установите службу для обмена сообщениями между приложениями dbus-user-session, если это не сделано ранее или служба не поставляется по умолчанию в дистрибутиве. Для установки выполните команду:
sudo apt-get install -y dbus-user-session
Далее действия выполняйте также под учетной записью с правами суперпользователя (root):
1.Создайте пользователя, от имени которого будет запускаться служба Docker. Для этого выполните команду:
adduser rxuser
Далее в разделе для примеров используется пользователь rxuser.
Следуйте инструкциям, которые выводятся в командой строке.
Примечание. На операционной системе Ubuntu группа пользователей создается одновременно с пользователем, поэтому ее не нужно добавлять отдельно.
2.Убедитесь в том, что для созданного пользователя содержится не менее 65 536 подчиненных UID/GID. Для этого последовательно выполните команды:
•для пользователя:
nano /etc/subuid
•для группы пользователей:
nano /etc/subgid
При выполнении каждой команды должна появиться запись:
rxuser:******:65536
Установка и настройка Docker в режиме Rootless
ВАЖНО. Если на компьютере уже запущена служба Docker, то ее необходимо удалить или остановить. Две службы Docker не рекомендуется запускать на одном сервере. После перезапуска операционной системы служба стартует автоматически, поэтому рекомендуется отключить также ее автозапуск.
Чтобы остановить службу Docker, выполните команду:
sudo systemctl disable --now docker.service docker.socket
Чтобы удалить службу Docker, выполните команду:
sudo rm /var/run/docker.sock
Порядок установки и настройки Docker:
1.Для запуска Docker в режиме Rootless установите соответствующий пакет. Действие выполняйте под ранее созданной учетной записью rxuser. Для этого выполните команду:
curl -fsSL https://get.docker.com/rootless | sh
2.Разрешите Docker использовать привилегированные порты, их номера ниже 1024. Действие выполняйте под учетной записью с правами суперпользователя (root).
setcap cap_net_bind_service=ep $(which rootlesskit)
3.Добавьте дополнительную настройку net.ipv4.ip_unprivileged_port_start в файл /etc/sysctl.conf. Это нужно для доступа пользователя без привилегий root к работе с определенными портами. Для этого выполните команду:
sudo echo "net.ipv4.ip_unprivileged_port_start=0" >> /etc/sysctl.conf
4.Увеличьте ограничение на количество экземпляров inotify, которые могут быть созданы для одного пользователя. Inotify – это механизм в ядре Linux, который позволяет приложениям отслеживать изменения в файловой системе в режиме реального времени. Для этого в файл /etc/sysctl.conf добавьте параметр fs.inotify.max_user_instances и укажите для него значение 65536. Далее оно будет использоваться при настройке диапазона идентификаторов пользователей и групп. Пример команды:
nano /etc/sysctl.conf
fs.inotify.max_user_instances = 65536
5.Примените настройки:
sudo sysctl --system
6.Чтобы делегировать пользователю rxuser управление лимитами ресурсов, последовательно выполните команды:
mkdir -p /etc/systemd/system/user@.service.d
cat > /etc/systemd/system/user@.service.d/delegate.conf << EOF
[Service]
Delegate=cpu cpuset io memory pids
EOF
7.Перезапустите процесс менеджера управления службами systemd:
systemctl daemon-reload
8.В файле /etc/security/limits.conf увеличьте количество запускаемых процессов для пользователя (ulimits).
Пример:
# recommended defaults for most systems
* soft core 0
* soft nproc 8192
root soft nproc 8192
* hard nproc 8192
Настройка работы под новым пользователем
1.Войдите в операционную систему под учетной записью созданного пользователя rxuser.
2.Экспортируйте переменные:
export PATH=/usr/bin:$PATH
export DOCKER_HOST= unix:///run/user/1002/docker.sock
Также добавьте эти строки в файл ~/.bashrc, чтобы настройка не сбрасывалась после завершения сеанса работы.
ПРИМЕЧАНИЕ. Символ ~/ означает, что файл находится в домашней папке текущего пользователя. Для пользователя rxuser это папка /home/rxuser.
Путь к сокету или контекст CLI можно указать, используя переменную окружения (если она определена):
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
3.Запустите службу Docker. Для этого последовательно выполните команды:
systemctl --user start docker
systemctl --user enable docker
4.Настройте автозапуск службы при старте операционной системы. Действие выполняйте под учетной записью с правами суперпользователя (root).
sudo loginctl enable-linger rxuser
5.Выполните команду, чтобы Docker работал в режиме Rootless. Далее действия выполняйте под ранее созданной учетной записью rxuser.
docker context use rootless
6.Перезапустите службу Docker:
systemctl --user restart docker
7.Проверьте, что у пользователя есть права на чтение и запись в папку с Directum Launcher и вложенные в нее папки. Также проверьте права на запись в домашнюю папку пользователя (/home/rxuser).
8.Далее завершите действия по подготовке к установке и установите систему с помощью Directum Launcher. Действия также выполняйте под ранее созданной учетной записью rxuser. При выполнении команд скриптов развертывания не используйте команду sudo, так как она предназначена для выполнения действий от имени суперпользователя.
© Компания Directum, 2025 |