докер, как обращаться с разрешениями для ноутбука Jupyter - 3 подхода, которые не работают - PullRequest
0 голосов
/ 01 июля 2018

Впервые в докер

Какова лучшая практика для обработки идентификатора пользователя / gid и разрешений с ноутбуками jupyter в докере?

  1. При запуске одного из Docker-файлов jupyter + python в https://github.com/jupyter/docker-stacks/tree/master/scipy-notebook записная книжка сохраняется с uid / gid 1000: 100. Это не удастся, если подключенная папка хоста не будет доступна для записи другим пользователям, что является уродливым подходом.

  2. Образ записной книжки можно запустить с указанием 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 и не может быть прочитан другими. Таким образом, все пакеты дополнений не могут быть загружены!

  1. Мы также можем запустить сборку Docker с помощью --build-arg myuid = $ (id -u) --build-arg mygid = $ (id -g)

Полагаю, это приведет к тому, что и / home / jovyan, и / opt / conda будут принадлежать одному и тому же uid: gid, как и мне, все хорошо. Однако полученное изображение может быть использовано только мной. Если я передам его своим сотрудникам (у которых разные uid), это не будет работать.

Так что, похоже, все возможности заблокированы или плохой выбор. Права доступа к файлам в докере трудны.

Кто-нибудь может поделиться лучшим подходом к этой проблеме?

1 Ответ

0 голосов
/ 28 октября 2018

Лучшая практика с Jupyter Notebook - использовать свой собственный идентификатор пользователя и идентификатор группы, чтобы новые файлы, которые вы создаете, имели правильное владение. Затем используйте --group-add users, чтобы добавить себя в группу users , чтобы получить доступ к необходимым папкам (например, /opt/conda).

Полная команда будет:

docker run -it --rm --user $(id -u):$(id -g) --group-add users -v "$(pwd)":/home/jovyan -p 8888:8888 jupyter/scipy-notebook

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...