在没有systemd的CentOS 7 Docker镜像中的服务

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

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

任何提示或替代品,表示赞赏。

更新:成功!

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

rstudio-server比较棘手。 首先,我需要安装脚本来获得依赖关系,这样一些第一个脚本就可以工作了。 在这之后,执行rstudio-server start将不会执行任何操作,也不会提供任何错误。 我通过各种链接跟踪调用,发现自己在/ usr / lib / rstudio-server / bin / rstudio-server中。 daemonCmd()函数testingcat / proc / 1 / comm来确定如何启动服务器。 出于某种原因,这是失败的,但看看脚本,似乎很清楚,它需要执行/etc/init.d/rstudio-server start 。 如果我手动或在Docker CMD行中,似乎工作。

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

有点破解,但不坏。 我很高兴听到任何其他的build议。

你不一定需要使用像systemd这样的init系统。

基本上,你需要启动多个服务,现有的模式。 查看这个页面,了解如何使用supervisord实现同样的function: https : //docs.docker.com/engine/admin/using_supervisord/