Назад | Перейти на главную страницу

изменить расположение папки / etc / group

Я использую докер с ubuntu, и мне нужно смонтировать

/etc/group 
/etc/shadow   
/etc/gshadow
/etc/passwd

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

С точки зрения Ubuntu мне просто нужно навсегда переместить этот файл в другую папку, например:

/bck/group 
/bck/shadow
/bck/gshadow
/bck/passwd

Я пробовал сделать символьную ссылку в / etc

lrwxrwxrwx  1 root root    21 Mar  7 15:50 group -> /bck/userbackup/group

Но когда я пытаюсь создать нового пользователя, возникает следующая ошибка.

Для моего (очень очень плохого) знания кажется проблема, связанная с правами доступа:

:/etc# adduser createuserxx
Adding user `createuserxx' ...
Adding new group `createuserxx' (1001) ...
groupadd: cannot open /etc/group
adduser: `/usr/sbin/groupadd -g 1001 createuserxx' returned error code 10. Exiting.

Думаю, есть подход получше.

Вы можете добавить пользователя в Dockerfile, а затем использовать полученный контейнер (с созданной вами учетной записью / паролем) в качестве основы для других контейнеров, которые вы создаете.

Помимо всего прочего, монтирование вашего хоста / etc / {passwd, shadow, groups} делает вашу установку очень привязанной к хосту, на котором вы строите контейнеры, что в некотором роде лишает смысла использование контейнеров.

Поэтому я бы предложил сделать что-то вроде:

FROM $YOUR_BASE_OS

RUN useradd -s /bin/bash -g somegroup someuser
<....rest of dockerfile....>

Если вы создаете контейнер только с этими двумя строками и называете его, например, my-base-container, то для всех остальных контейнеров у вас может быть:

FROM my-base-container:latest

RUN some command
CMD some other command