我正在尝试创建一个基于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行调用。
有点破解,但还不错。我很高兴听到任何其他建议。
_why_你需要systemd吗? – jaxxstorm
shiny-server和rstudio-server需要systemd以便在安装时启用和启动服务。有没有办法让我在没有systemd的情况下启动这种服务?我尝试了init,但它似乎有其他系统依赖项,我无法解决。 – KirkDCO