<< Click to Display Table of Contents >> Администрирование (Linux) > Локальная установка системы > Подготовка к установке Установка Docker в режиме Rootless |
Чтобы служба Docker запускалась от конкретной учетной записи без привилегий суперпользователя, установите Docker в режиме Rootless. Он позволяет безопасно запускать службу Docker, так как пользователь не имеет доступа к системным ресурсам. Дополнительно в этом режиме можно запускать и сами службы внутри контейнеров от учетных записей без привилегий root. Таким образом, администратор сможет отследить, кто менял данные в системе, и вовремя принять меры для обеспечения безопасности.
Также необходимо учитывать, что компоненты MongoDB и RabbitMQ не поддерживают работу в режиме Rootless, их нужно развертывать на отдельном сервере.
Порядок установки компонентов Docker в режиме Rootless может отличаться в зависимости от используемого дистрибутива Linux. Подробнее см. в документации Docker статью Run the Docker daemon as a non-root user (Rootless mode) или в официальной документации используемого дистрибутива Linux. В разделе приведен пример установки в операционной системе Альт Сервер 10.0:
1.Создайте пользователя, от имени которого будет запускаться служба Docker.
2.Установите и настройте Docker в режиме Rootless.
3.Настройте работу Docker от имени созданного пользователя.
1.На сервере, где планируется развернуть компоненты Docker, войдите в операционную систему под учетной записью с правами суперпользователя (root).
2.Создайте группу пользователей и задайте для нее идентификатор. Для этого выполните команду:
groupadd –g <Идентификатор группы> <Имя группы>
Пример:
groupadd –g 25000 rxuser
3.В группе создайте пользователя, от имени которого будет запускаться служба Docker. Далее в разделе для примеров используется пользователь rxuser.
ВАЖНО. Рекомендуется задавать одинаковые имя и идентификатор для группы и пользователя.
adduser –u <Идентификатор пользователя> –g <Идентификатор группы> <Имя пользователя>
Пример:
adduser –u 25000 –g 25000 rxuser
4.Задайте пароль для пользователя:
passwd rxuser <Пароль>
Вы также можете использовать учетную запись ранее созданного пользователя. Необходимо проверить, что он входит в группу с тем же именем и идентификатором, что и у пользователя.
Установка и настройка Docker в режиме Rootless
ВАЖНО. Если на компьютере уже запущена служба Docker, то ее необходимо удалить или остановить. Две службы Docker не рекомендуется запускать на одном сервере. После перезапуска операционной системы служба стартует автоматически, поэтому рекомендуется отключить также ее автозапуск. Чтобы остановить службу Docker, выполните команду:
systemctl stop docker
Далее действия выполняйте под учетной записью с правами суперпользователя (root).
1.Обновите кэш пакетов. Для этого выполните команду:
apt-get update
2.Для запуска Docker в режиме Rootless установите пакет docker-engine-rootless:
apt-get install docker-engine-rootless
3.Разрешите Docker использовать привилегированные порты, их номера ниже 1024:
setcap cap_net_bind_service=ep $(which rootlesskit)
4.Увеличьте ограничение на количество экземпляров inotify, которые могут быть созданы для одного пользователя. Inotify – это механизм в ядре Linux, который позволяет приложениям отслеживать изменения в файловой системе в режиме реального времени. Для этого в файл /etc/sysctl.conf добавьте параметр fs.inotify.max_user_instances и укажите для него значение 65536. Далее оно будет использоваться при настройке диапазона идентификаторов пользователей и групп. Пример команды:
nano /etc/sysctl.conf
fs.inotify.max_user_instances = 65536
5.Примените настройки:
sysctl –p
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.d/50-defaults.conf (ulimits) увеличьте количество запускаемых процессов для пользователя.
Пример:
# recommended defaults for most systems
* soft core 0
* soft nproc 8192
root soft nproc 8192
* hard nproc 8192
9.Добавьте запись о subuid – диапазон идентификаторов, которые будут использоваться в операционной системе для пользователя:
echo "rxuser:100000:65536" >> /etc/subuid
10.Добавьте запись о subgid – диапазон идентификаторов, которые будут использоваться в операционной системе для группы пользователей:
echo "rxuser:100000:65536" >> /etc/subgid
Настройка работы под новым пользователем
1.Войдите в операционную систему под учетной записью созданного пользователя rxuser.
2.После установки пакета docker-engine-rootless на предыдущих шагах настройки в папке /usr/bin появился пакет dockerd-rootless-setuptool.sh. Запустите его, чтобы настроить службу Docker:
dockerd-rootless-setuptool.sh install
3.Экспортируйте переменные:
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
Также добавьте эти строки в файлы ~/.bashrc и ~/.bash_profile, чтобы настройка не сбрасывалась после завершения сеанса работы.
ПРИМЕЧАНИЕ. Символы ~/ означают, что файл находится в домашней папке текущего пользователя. Для пользователя rxuser это папка /home/rxuser.
4.Чтобы Docker работал в режиме Rootless, выполните команду:
docker context use rootless
5.Запустите службу Docker:
systemctl --user start docker.service
Для управления службой Docker также используйте команды:
•остановить службу:
systemctl --user stop docker.service
•перезапустить службу:
systemctl --user restart docker.service
6.Настройте автозапуск службы при старте операционной системы:
loginctl enable-linger <Имя пользователя>
Пример:
loginctl enable-linger rxuser
7.Проверьте, что у пользователя есть права на чтение и запись в папку с Directum Launcher и вложенные в нее папки. Также проверьте права на запись в домашнюю папку пользователя (/home/rxuser).
8.Далее завершите действия по подготовке к установке и установите систему с помощью Directum Launcher.
ВАЖНО. Дальнейшие действия по подготовке и установке системы выполняйте под учетной записью созданного пользователя. При выполнении команд скриптов развертывания не используйте команду sudo, так как она предназначена для выполнения действий от имени суперпользователя.
© Компания Directum, 2024 |