Возможно ли запустить tensorflow-gpu внутри контейнера docker от имени некорневого пользователя?

#linux #docker #tensorflow #nvidia

#linux #docker #tensorflow #nvidia

Вопрос:

Я настраиваю контейнер docker для разработки с использованием tensorflow-gpu с использованием графических процессоров nvidia. Я надеюсь заставить все это работать от имени некорневого пользователя внутри контейнера. Контейнер отлично работает от имени пользователя root. Есть идеи, что мне нужно сделать, чтобы настроить контейнер для работы с некорневым пользователем?

Я пытался изменить разрешения для пользователя внутри контейнера, но, похоже, это не работает. Кроме того, не удалось найти какую-либо информацию или связанный с ней вопрос с помощью Google, который помог бы решить эту проблему.

Я также попытался сравнить настройки среды между root и фактическим пользователем, но и там не нашел подсказок. Также следует отметить, что вызов nvidia-smi работает как для пользователя root, так и для пользователя, не являющегося root.

Я создал изображение, используя эту ссылку в качестве отправной точки: https://gitlab.com/nvidia/cuda/blob/ubuntu16.04/9.0/runtime/cudnn7/Dockerfile

Кроме того, я установил Python3.5 с необходимыми пакетами, включая tensorflow-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