Как запускать 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
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
Комментарии
Отправить комментарий