2017-04-04 147 views
1

我正在尝试创建一个基于CentOS 7的Docker容器,这个容器将托管R,shiny-server和rstudio-server,但是为了服务我需要systemd开始。我可以使用启用systemd的centos映像作为基础,但是我需要以特权模式运行容器并允许访问主机上的/ sys/fs/cgroup。我可能能够容忍较不安全的情况,但是我无法与在Windows或Mac上运行Docker的用户共享容器。CentOS 7中的服务没有systemd的Docker镜像

我发现这个问题,但它是2岁,似乎并没有任何解决方案。

任何提示或替代方案表示赞赏。

UPDATE:SUCCESS!

下面是我发现的:对于闪亮服务器,我只需要使用命令行中的相应参数执行shiny-server。我将适当的调用捕获到一个脚本文件中,并使用我的Dockerfile中的最终CMD行进行调用。

rstudio-server比较棘手。首先,我需要安装initscripts来获得依赖关系,以便一些第一个音频文件可以工作。在此之后,执行rstudio-server start基本上什么都不做,并且不会提供任何错误。我通过各种链接跟踪调用,发现自己位于/ usr/lib/rstudio-server/bin/rstudio-server中。 daemonCmd()函数测试cat/proc/1/comm来确定如何启动服务器。由于某种原因,它失败了,但看着脚本,似乎很清楚,它需要执行/etc/init.d/rstudio-server start。如果我手动或在Docker CMD行中这样做,它似乎工作。

我已经采取了这两个CMD线的要求,并将它们放入sh脚本,从Dockerfile中的CMD行调用。

有点破解,但还不错。我很高兴听到任何其他建议。

+1

_why_你需要systemd吗? – jaxxstorm

+0

shiny-server和rstudio-server需要systemd以便在安装时启用和启动服务。有没有办法让我在没有systemd的情况下启动这种服务?我尝试了init,但它似乎有其他系统依赖项,我无法解决。 – KirkDCO

回答