我正在设置一个docker容器以使用nvidia GPU使用tensorflow-gpu进行开发。我希望所有这些以容器内的非root用户身份工作。该容器可以完美地作为root用户使用。我需要做什么配置容器才能与非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