我目前使用Nvidia-Docker运行官方Tensorflow Docker容器(GPU):
但是,我找不到为容器设置默认用户的方法。此容器的默认用户是" root ",这在安全方面是危险的并且有问题,因为它提供对共享文件夹的root访问权限。
让我们说我的主机与用户一起运行" CNNareCute ",有没有办法用同一个用户启动我的容器?
答案 0 :(得分:1)
AFAIK,docker镜像默认以root身份运行。这意味着使用图像作为基础的任何Dockerfile都不必跳过箍来修改它。您可以在Dockerfile中执行用户修改 - 就像您在其他任何可以为您提供所需配置的Linux机箱上一样。
您无法在容器中使用(动态)来自主机的用户而无需先在容器中创建用户 - 而且他们实际上是具有相同名称的单独用户。
您可以将命令和ssh作为特定用户运行到容器中,前提是它存在于容器中。例如,需要运行保留docker exec --user www-data application_container_1 sh -c "php something"
权限的命令的PHP应用程序将按如下方式运行:
from tweepy import Stream
from service.twitter.listener.tweety_listener import TweetyStreamDataListener
from settings import twitter_config
class Tweety(object):
def __init__(self, listener=TweetyStreamDataListener()):
self.listener = listener
self.__auth__ = None
def __authenticate__(self):
from tweepy import OAuthHandler
if self.__auth__ is None:
self.__auth__ = OAuthHandler(twitter_config['consumer_key'], twitter_config['consumer_secret'])
self.__auth__.set_access_token(twitter_config['access_token'], twitter_config['access_token_secret'])
return self.__auth__ is not None
def __streamer__(self):
is_authenticated = self.__authenticate__()
if is_authenticated:
return Stream(self.__auth__, self.listener)
return None
def filter(self, keywords=None, async=True):
streamer = self.__streamer__()
try:
print "[STREAM] Started steam"
streamer.filter(track=keywords, async=async)
except Exception as ex:
print "[STREAM] Stream stopped! Reconnecting to twitter stream"
print ex.message, ex.args
self.filter(keywords=keywords, async=async)
简而言之,您可以设置您喜欢的任何用户并使用它们来运行脚本,但默认设置为root,除非您将其删除,否则它将会存在...
答案 1 :(得分:1)
默认情况下,Docker容器运行为root
。您可以通过将--user <user>
传递给docker run命令来覆盖用户。但请注意,如果容器进程需要在容器内进行root访问,则可能会出现问题。
您提到的安全问题是使用User Namespaces在docker中处理的。用户名空间基本上将容器中的用户映射到主机上的不同用户池。因此,您可以将容器内的root用户映射到主机上的普通用户,并且应该减轻安全问题。