如何以非root用户身份运行官方Tensorflow Docker镜像?

我目前使用Nvidia-Docker运行官方的Tensorflow Docker Container(GPU):

  • https://hub.docker.com/r/tensorflow/tensorflow/
  • https://gcr.io/tensorflow/tensorflow/

但是,我找不到为容器设置默认用户的方法。 此容器的默认用户是“ root ”,这在安全性方面是危险的,并且因为它提供了对共享文件夹的根访问权限。

比方说,我的主机与用户“ CNNareCute ”运行,有什么办法用同一个用户启动我的容器?

默认情况下,Docker容器以root身份运行。 您可以通过将--user <user>传递给docker run命令来覆盖用户。 但是请注意,如果容器进程需要在容器中进行根访问,则这可能是有问题的。

您提到的安全问题在Docker中使用User Namespaces处理。 用户名空间基本上将容器中的用户映射到主机上不同的用户池。 因此,您可以将容器内的根用户映射到主机上的普通用户,应该减轻安全问题。

AFAIK,docker映像默认以root身份运行。 这意味着任何使用图像作为基础的Dockerfile,都不必跳过修改。 你可以在一个Dockerfile中执行用户修改 – 就像你在其他任何一个可以给你所需的configuration的Linux机器上一样。

您将无法在容器中(主动)从容器中使用用户,而无需先在容器中创build它们,而且这些用户将实际上是具有相同名称的单独用户。

您可以将命令和ssh作为容器中存在的特定用户运行到容器中。 例如,需要运行命令的PHP应用程序保留www-data权限,运行如下:

docker exec --user www-data application_container_1 sh -c "php something"

所以简而言之,你可以设置你喜欢的任何用户,并使用它们来运行脚本,但默认情况下将是root,它将存在,除非你删除它也可能有影响…