Настройка Docker VPS (ubuntu 22.04) на хостинге beget

Как запускать docker контейнеры от пользователя а не от рута

На чистой ОС создаем нового пользователя, желательно с тем же UID & GID который у нас на локальной машине, если на ней linux подобная ОС. Это нужно чтобы в дальнейшем не было проблем с правами доступа к файлам при копировании с локальной на удаленную машину и обратно.

По умолчанию первый пользователь создается с uid=1000, gid=1000, проверяем кто мы на локальной машине:

id

Видим что-то подобное:

uid=1000(user) gid=1000(user) группы=1000(user),4(adm),24(cdrom),27(sudo),46(plugdev)

Убеждаемся что нет такого пользователя с таким же id и id группы на удаленной машине:

cat /etc/passwd

Если видим нечто похожее на такую запись, то пользователь существует:

user:x:1000:1000:user,,,:/home/user:/bin/bash

Аналогично смотрим в группах запись группы с тем же id:

cat /etc/group

Если пользователя или группы нет, создаем. Важен только id, имя группы и пользователя значения не имеет и может быть любым, например user. Команды вводим от пользователя root:

groupadd --gid 1000 user

useradd --uid 1000 --gid user --shell /bin/bash --create-home user

Если при создании VPS был выбран профиль с Docker, то он уже предустановлен и готов к работе. Меня не устраивала версия docker-compose я ее обновил на последнюю на тот момент:

curl -SL https://github.com/docker/compose/releases/download/v2.14.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose -v

Теперь чтобы запускать docker контейнеры от пользователя user необходимо добавить его в группу docker:

usermod -aG docker user

Меняем пользователя с root на user:

su user

cd /home/user

Посмотреть что пользователь заблокирован (без пароля):

passwd -S user

покажет что-то типа того:

user L 01/06/2023 0 99999 7 -1 (L заблокирован)

Если надо входить на VPS от пользователя user, то необходимо создать пароль. Для этого надо вернуться на пользователя root:

exit

Только root может задать новый пароль, без ввода старого:

passwd user

Вводим 2 раза пароли, видим нечто подобное:

New password: 
Retype new password:
passwd: password updated successfully

Чтобы залить файлы на удаленную машину если локальная тоже linux, можно подмонтировать удаленную директорию используя на локальной машине утилиту sshfs:

sudo apt install sshfs

mkdir ~/mnt/

sshfs user@you-hostname.com:/home/user ~/mnt

Теперь в ~/mnt будет доступна удаленная директория /home/user куда можно перекинуть файлы с локальной машины.
В Windows лучше использовать WinCSP клиент для обмена файлами по SSH протоколу без танцев с бубном.

Выполняем вход по SSH открыв новый терминал:

ssh user@you-hostname.com

В /home/user создаем новую директорию с проектом docker, заливаем в нее docker-compose.yml или .Dockerfile с настройками контейнеров и запускаем:

docker-compose -f ~/myproject/docker-compose.yml up -d


Комментарии