#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