Впервые в докер
Какова лучшая практика для обработки идентификатора пользователя / gid и разрешений с ноутбуками jupyter в докере?
При запуске одного из Docker-файлов jupyter + python в https://github.com/jupyter/docker-stacks/tree/master/scipy-notebook записная книжка сохраняется с uid / gid 1000: 100. Это не удастся, если подключенная папка хоста не будет доступна для записи другим пользователям, что является уродливым подходом.
Образ записной книжки можно запустить с указанием NB_UID и NB_GID, например:
запуск докера -p 8888: 8888 -it --rm -e NB_UID = $ (id -u) -e NB_GID = $ (id -g) -e GRANT_SUDO = да - пользовательский корень - тип подключения = привязка , source = "$ (pwd)", target = / home / jovyan / work myimage
В этом случае uid / gid joyvan в контейнере совпадают с my uid / gid, поэтому проблем с правами на запись в смонтированную папку не возникает. Однако теперь jovyan (пользователь контейнера) не может получить доступ к / opt / conda, который принадлежит 1000: 100 и не может быть прочитан другими. Таким образом, все пакеты дополнений не могут быть загружены!
- Мы также можем запустить сборку Docker с помощью --build-arg myuid = $ (id -u) --build-arg mygid = $ (id -g)
Полагаю, это приведет к тому, что и / home / jovyan, и / opt / conda будут принадлежать одному и тому же uid: gid, как и мне, все хорошо. Однако полученное изображение может быть использовано только мной. Если я передам его своим сотрудникам (у которых разные uid), это не будет работать.
Так что, похоже, все возможности заблокированы или плохой выбор. Права доступа к файлам в докере трудны.
Кто-нибудь может поделиться лучшим подходом к этой проблеме?