gpt4 book ai didi

docker - 在 docker 中运行单个进程而不提供基本的系统服务是不是错了?

转载 作者:IT老高 更新时间:2023-10-28 21:25:23 27 4
gpt4 key购买 nike

看完introduction of the phusion/baseimage我觉得从 Ubuntu 镜像或任何其他官方发行版镜像创建容器并在容器内运行单个应用程序进程是错误的。

简而言之主要原因:

  • 没有适当的初始化进程(处理僵尸进程和孤立进程)
  • 没有系统日志服务

基于这一事实,docker hub 上可用的大多数官方 docker 镜像似乎都做错了。例如,MySQL 镜像将 mysqld 作为唯一进程运行,除了由 mysqld 写入到 STDOUTSTDERR,可通过 docker logs 访问。

现在问题出现了,哪种方式是在 docker 容器中运行服务的合适方式。在 docker 容器内只运行单个应用程序进程,不提供 syslog 等基本的 Linux 系统服务是不是错了?是否取决于容器内运行的服务类型?

最佳答案

查看 discussion好好阅读这个问题。基本上,来自 Solomon Hykes 和 docker 的官方说法是 docker 容器应该尽可能接近单进程微服务器。单个“真实”服务器上可能有许多这样的服务器。如果进程失败,您应该只启动一个新的 docker 容器,而不是尝试在容器内设置初始化等。因此,如果您正在寻找规范的最佳实践,答案是没有基本的 linux 服务。当您考虑在单个节点上运行许多 docker 容器时,这也是有道理的,您真的希望它们都运行自己的这些服务版本吗?

也就是说登录docker服务的状态是famously broken .偶Solomon Hykes docker 的创建者承认它的工作正在进行中。此外,您通常需要更多的灵 active 来进行实际部署。我通常使用卷将日志挂载到主机系统上,并在主机 vm 中运行日志轮换守护程序等。同样,我要么安装 sshd,要么在容器中打开一个交互式 shell,这样我就可以在不重新启动的情况下发出次要命令,至少在我确定我的容器是密封的并且不再需要调试之前。

编辑:使用 docker 1.3 和 exec 命令不再需要“让交互式 shell 保持打开状态”。

关于docker - 在 docker 中运行单个进程而不提供基本的系统服务是不是错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26101655/

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