Я настраиваю докер-контейнер для разработки с tenorflow-gpu с использованием графических процессоров nvidia. Я надеюсь заставить все это работать как пользователь без полномочий root внутри контейнера. Контейнер отлично работает как пользователь root. Любые идеи, что мне нужно сделать, чтобы настроить контейнер для работы с пользователем без полномочий root?
Я пытался изменить разрешения для пользователя внутри контейнера, но, похоже, это не работает. Кроме того, не удалось найти какую-либо информацию или связанный вопрос с помощью Google, который помог бы решить эту проблему.
Я также пытался сравнить настройки среды между пользователем root и фактическим пользователем, но также не нашел оттуда подсказок. Также отметим, что вызов nvidia-smi работает как для пользователя root, так и для пользователя без полномочий root.
Я построил изображение, используя эту ссылку в качестве отправной точки: https://gitlab.com/nvidia/cuda/blob/ubuntu16.04/9.0/runtime/cudnn7/Dockerfile
Кроме того, я установил Python3.5 с необходимыми пакетами, включая тензор-gpu.
Также я создал пользователя в изображение, как показано ниже.
ARG USER_NAME
ARG USER_ID
ARG GROUP_ID
RUN groupadd -g 1004 ${GROUP_ID}
RUN useradd -rml -d /home/${USER_NAME} -s /bin/bash -g ${GROUP_ID} -u ${USER_ID} ${USER_NAME}
Таким образом, файлы, созданные контейнером, принадлежат мне на хосте, что является желаемым результатом. Это отлично работает.
Я пробовал эту настройку от имени пользователя root, и она работает.
$ sudo docker run -u root -it --runtime=nvidia -v /home/$(whoami):/home/$(whoami) gpu-env bash
$ python3
>>> import tensorflow as tf
>>>
Однако это не работает.
$ sudo docker run -it --runtime=nvidia -v /home/$(whoami):/home/$(whoami) gpu-env bash
$ python3
>>> import tensorflow as tf
Traceback (most recent call last):
...
ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory