gpt4 book ai didi

docker - 不带systemd的CentOS 7 Docker镜像中的服务

转载 作者:行者123 更新时间:2023-12-02 19:37:28 27 4
gpt4 key购买 nike

我正在尝试创建基于CentOS 7的Docker容器,该容器将托管R,Shiny-server和rstudio-server,但是要启动这些服务,我需要使用systemd。我可以使用启用了systemd的centos镜像作为基础,但是随后我需要在特权模式下运行容器,并允许访问主机上的/ sys / fs / cgroup。我也许可以忍受不太安全的情况,但是后来我无法与在Windows或Mac上运行Docker的用户共享该容器。

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

任何提示或替代,不胜感激。

更新:成功!

我发现的结果是:对于Shiny-server,我只需要从命令行使用适当的参数执行shiny-server。我将适当的调用捕获到脚本文件中,并使用Dockerfile中的最后CMD行进行调用。

rstudio-server比较棘手。首先,我需要安装初始化脚本以使依赖关系就位,以便某些rstudio脚本能够正常工作。此后,执行rstudio-server start实际上将什么也不做,也不提供任何错误。我通过各种链接跟踪了 call ,并在/ usr / lib / rstudio-server / bin / rstudio-server中找到了自己。 daemonCmd()函数测试cat / proc / 1 / comm以确定如何启动服务器。由于某种原因,它失败了,但是查看脚本,似乎很明显它需要执行/etc/init.d/rstudio-server start。如果我手动执行此操作或在Docker CMD行中执行此操作,则它似乎可以正常工作。

我已经考虑了这两个CMD行要求,并将它们放到一个sh脚本中,该脚本从Dockerfile中的CMD行调用。

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

最佳答案

您不一定需要使用像systemd这样的初始化系统。

从本质上讲,您需要启动多个服务,为此,存在现有的模式。 checkout 此页面,了解如何使用supervisor实现相同的功能:https://docs.docker.com/engine/admin/using_supervisord/

关于docker - 不带systemd的CentOS 7 Docker镜像中的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43212291/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com