Хост ОС: Выпуск Red Hat Enterprise Linux Server 7.9 (Майпо)
Гостевая ОС то есть запущенный контейнер Docker: OpenSuse 15.2
Докер-версия (на хосте): Докер версии 19.03.5, сборка 633a0ea
На хосте, когда я клонирую репозиторий «utilities_scripts», у меня есть действительный доступ для пользователя (из-за umask).
- Я думаю, что проблема здесь не в разрешении, а в том, ПОЧЕМУ ПОЛЬЗОВАТЕЛЬ, определенный в файле Docker, не устанавливается в качестве владельца папок/файлов (которые монтируются) внутри контейнера докеров, когда я выдаю следующее
докер работает...
команда. Установка 755/775 и т. д. не вариант, так как я не могу указать внутри контейнера в качестве целевого пользователя докера, а установка 777 - плохая практика.
ПРИМЕЧАНИЕ:
- Когда я пробую тот же образ докера с другого компьютера с Linux, папка/файлы монтируются как пользователь "docker_non_root_user", который определен в Dockerfile как
ПОЛЬЗОВАТЕЛЬ docker_non_root_user
.
сборка докера...
успешно работает и создает образ, а контейнер работает на другой машине (когда я монтирую репозитории git clone внутри контейнера, используя -v <хост>:<контейнер>
Синтаксис опции командной строки docker.
Фрагмент кода из Dockerfile:
# Определяем любые ссылки на точки монтирования
ТОМ ["/home/docker_non_root_user/git"]
ПОЛЬЗОВАТЕЛЬ docker_non_root_user
РАБОЧИЙ КАТАЛОГ /home/docker_non_root_user/git
Это то, что я вижу на хосте, где у меня есть Dockerfile ПОЛЬЗОВАТЕЛЬ ...
вопрос собственности:
[gigauser@jenkins-projectABC bitbucket_workspace]$ whoami
гигаузер
[gigauser@jenkins-projectABC bitbucket_workspace]$ идентификатор
uid=gigauser(gigauser) gid=21520(jenkins) groups=21520(jenkins),3000(ectx)
[gigauser@jenkins-projectABC bitbucket_workspace]$ umask
0077
[gigauser@jenkins-projectABC bitbucket_workspace]$ ls -l
всего 12
drwx------ 5 gigauser jenkins 4096 3 февраля 16:36 утилиты_скрипты
[gigauser@jenkins-projectABC bitbucket_workspace]$
[gigauser@jenkins-projectABC bitbucket_workspace]$ sudo docker image ls
Пароль активного каталога:
ТЕГ РЕПОЗИТОРИЯ ИДЕНТИФИКАТОР ИЗОБРАЖЕНИЯ РАЗМЕР СОЗДАН
Project-im-opensuse 15.2 0c9ee31464cd 43 часа назад 2.39GB
[gigauser@jenkins-projectABC bitbucket_workspace]$
[gigauser@jenkins-projectABC bitbucket_workspace]$
[gigauser@jenkins-projectABC bitbucket_workspace]$ sudo docker run -v $PWD/utilities_scripts:/home/docker_non_root_user/git/utilities_scripts/ -it project-im-opensuse:15.2 bash -c "whoami; id; какой bash; bash - -версия; ls -l; эхо; ls -l утилиты_скрипты; ls -l /home/docker_non_root_user/git/utilities_scripts; id gigauser; echo"
ВНИМАНИЕ! Переадресация IPv4 отключена. Сеть работать не будет.
docker_non_root_user
uid=1000(docker_non_root_user) gid=487(docker_non_root_user) groups=487(docker_non_root_user),100(пользователи)
/бин/баш
GNU bash, версия 4.4.23(1)-выпуск (x86_64-suse-linux-gnu)
Авторское право (C) 2016 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или выше <http://gnu.org/licenses/gpl.html>
Это бесплатное программное обеспечение; вы можете свободно изменять и распространять его.
НИКАКИХ ГАРАНТИЙ, насколько это разрешено законом.
всего 8
drwx------ 5 gigauser 21520 4096 4 фев 00:36 утилиты_скрипты
ls: невозможно открыть каталог 'utilities_scripts': разрешение отклонено
ls: невозможно открыть каталог '/home/docker_non_root_user/git/utilities_scripts': разрешение отклонено
id: 'gigauser': такого пользователя нет
[gigauser@jenkins-projectABC bitbucket_workspace]$
Когда я запускаю ту же команду на другом компьютере с Linux, я вижу утилиты_скрипты
владелец папки docker_non_root_user
.
Вопрос: ПОЧЕМУ Я вижу USER-ID пользователя хоста (где я запускаю докер запустить команда) устанавливается внутри контейнера докеров в папке утилиты_скрипты, когда такой идентификатор пользователя не был создан в Dockerfile/существует внутри контейнера? (см. 2-ю последнюю строку в приведенном выше выводе выше). В настоящее время он получает те же разрешения на уровне владельца хоста и папки внутри контейнера докеров.
гигаузер
то есть пользователь хоста находится не в контейнере докеров, а в файле лс -л
вывод показывает гигаузер
является владельцем утилиты_скрипты
папки/файлы в контейнере. Эта проблема не возникает на другом хост-компьютере.
я даже проверил /etc/subuid
файл, выглядит нормально для меня. Изменение значения внутри пользователя докера не помогло. Также я не вижу ничего связанного с этим в /etc/докер/daemon.json
файл.
$ кот /etc/subuid
гигаузер: 165536: 65536
Работает так же докер запустить .... параметры
Команда выше с другого хост-компьютера Linux показывает владение папкой внутри контейнера докеров как:
drwx------ 5 docker_non_root_user 1000 272 26 января 21:52 утилиты_скрипты