CentOS 7 Docker映像中不带systemd的服务

CentOS 7 Docker映像中不带systemd的服务,docker,shiny,rstudio,centos7,systemd,Docker,Shiny,Rstudio,Centos7,Systemd,我正在尝试创建一个基于CentOS 7的Docker容器,它将承载R、shiny server和rstudio server,但为了启动服务,我需要使用systemd。我可以使用启用systemd的centos映像作为基础,但是我需要以特权模式运行容器,并允许访问主机上的/sys/fs/cgroup。我可能可以容忍不太安全的情况,但我无法与在Windows或Mac上运行Docker的用户共享容器 我发现了这个问题,但它已经2年了,似乎没有任何解决方案 任何提示或替代品都将不胜感激 更新:成功 我

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

我发现了这个问题,但它已经2年了,似乎没有任何解决方案

任何提示或替代品都将不胜感激

更新:成功

我发现:对于Shining server,我只需要使用命令行中的适当参数执行
Shining server
。我将适当的调用捕获到一个脚本文件中,并使用Dockerfile中的最后一行CMD调用它

rstudio服务器更复杂。首先,我需要安装initscripts以获得适当的依赖关系,这样一些rstudio脚本就可以工作了。在此之后,执行
rstudioserverstart
基本上不会做任何事情,也不会产生任何错误。我通过各种链接跟踪调用,发现自己位于/usr/lib/rstudio-server/bin/rstudio-server中。函数的作用是:测试cat/proc/1/comm以确定如何启动服务器。出于某种原因,它失败了,但从脚本来看,它显然需要执行
/etc/init.d/rstudio-server start
。如果我手动或在Docker命令行中这样做,它似乎可以工作

我将这两个CMD行需求放在一个sh脚本中,该脚本从Dockerfile中的CMD行调用


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

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


本质上,您需要启动多个服务,这是有现有模式的。查看此页面,了解如何使用supervisord实现同样的功能:

为什么需要systemd?Shining server和rstudio server需要systemd,以便在安装时启用和启动服务。在没有systemd的情况下,我是否有办法启动此类服务?我尝试了init,但它似乎有其他systemd依赖项,我无法解决。