Сводка: группа общего тома изменяется в контейнере докера, в зависимости от того, какой пользователь хост-компьютера работает с контейнером.Docker: группа общих томов изменяется в зависимости от пользователя хоста
В моей хост-машине у меня есть два пользователя: userHost1 и userHost2
Записан как userHost1 я получаю DEBiAN изображение, и я построил Docker изображение со следующим Dockerfile:
FROM debian
RUN adduser --disabled-password --gecos '' user
После этого, когда я запускаю докер с userHost1 и загружаю общий том, я могу писать на нем. Но если я загружу его с userHost2, я не могу писать.
Запуск докер в userHost1:
[email protected]:~$ docker run -t -i -u user -v /home/userHost1/try/:/try/ my_debian
[email protected]:/$ ls -ahl
...
drwxrwxr-x 2 user user 4.0K Mar 19 03:41 try
...
Но если бы я войти в хозяина как userHost2:
[email protected]:~$ docker run -t -i -u user -v /home/userHost2/try/:/try/ my_debian
[email protected]:/$ ls -ahl
...
drwxrwxr-x 2 1002 1002 4.0K Mar 19 03:45 try
...
[email protected]:/$ touch try/hello
touch: cannot touch `hello': Permission denied
Почему это происходит? Я думал, что пользователь в хосте не имеет значения для контейнера докеров. Это потому, что я вытащил изображение Debian как userHost1?
Конечно, пользователь userHost1 является владельцем/home/userHost1/try /, а userHost2 является владельцем/home/userHost2/try /.
Отлично, спасибо за объяснение. Есть ли стратегия/лучшие практики для решения этой проблемы? – user1294122
Ну, самое легкое решение - убедиться, что вы используете тот же самый uid везде, то есть userHost2 должен иметь uid как userHost1, который вы можете установить с помощью useradd/adduser. В противном случае вы можете предоставить выбранный доступ к gid и добавить всех пользователей в эту группу. –