首页  >  问答  >  正文

docker - 使用一个容器管理多个应用服务进程?还是每个服务进程创建一个容器?

使用一个容器管理多个应用服务进程?还是每个服务进程创建一个容器?

各区别是?

伊谢尔伦伊谢尔伦2707 天前1065

全部回复(5)我来回复

  • cloudmam

    cloudmam2020-06-23 15:41:00

    推荐服务器管理工具云帮手

    回复
    0
  • 哪儿

    哪儿2020-02-27 14:48:41

    推荐一款神器应该可以帮到你,云帮手是一款功能强大的全面集中化管理云主机软件。不仅是兼容Linux系统,Windows也是可以用的。实际上使用功能还是挺不错的,因为功能全面且安装简单,基本都是傻瓜式一键搞定,中间添加云主机的话,首次要添加探针,以后就基本可以在面板上操作了,这个是挺方便的。主流云那几个基本我都试过没问题,系统也没有问题,这个倒是挺省心的,不会说存在什么云商的或者系统的就用不了,又要另外找软件。大致功能如下:
    1.批量管理多台云主机;
    2.兼容性强大,兼容市面基本所有的云商云主机,兼容操作系统;
    3.操作简单,可视化界面预览资源、一键修复、一键部署;
    4. 可以远程登录云主机FTP桌面,处理云主机上的文件;
    5.监控和,资源还有告警功能,这个是挺好的,不用盯着看;
    6.系统修复功能,这个是挺实用也比较必须的;
    7.免费使用。总得来说功能还是挺全的,不存在需要又要另外找软件的尴尬,一个云帮手软件基本满足了所有需求。

    回复
    0
  • 習慣沉默

    習慣沉默2017-04-25 09:03:28

    docker中的业务怎么拆,拆多细,实际上是个见仁见智的事情。

    例如gogs的docker容器,启动了如下几个东西:

    s6-svscan-+-s6-supervise 
              |-s6-supervise---gogs 
              |-s6-supervise---sshd 
              `-s6-supervise---syslogd 

    解释一下,一般容器启动如下东西:

    1. PID=1的init进程,一般用supervisord,有些人用s6,例如上文中提到的gogs。此进程主要用于进程保活,进程重启。 
    2. agent,一般用于监控,某些agent还有可能会被用于执行命令等,例如有些公司会在java容器内安插一个agent,在异常的时候可以执行jmap等操作。 
    3. 业务进程,一般附属于init进程。很少见到有直接把业务进程当做主进程(init进程)的情况。因为主进程(init进程)跪掉,docker就跪了。 
    4. 其他附属进程,例如上文中提到的gogs,会附属启动一个sshd。有些还会附属启动其他服务,例如syslogd。 

    对于个人:

    举个栗子,gitlab 
    对于个人,完全可以为了方便,把gitlab的所需要的所有服务,都放进同一个docker。 
    包括: 
    1. nginx 
    2. sshd 
    3. mysql 
    4. gitlab(unicorn) 

    但是实际上,生产环境中,不能这么做。

    至少,即便mysql不能托管给DBA,也不要放到同一个docker里,最次,也得做关联容器,mysql放在一个篮子里,gitlab放在另一个篮子里。

    从业务上来说,已经不是同一个东西了。

    从稳定性上来说,也不建议。

    这是使用docker的最底线的节操,不能再低了。

    别人怎么拆解gitlab的业务

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-25 09:03:28

    像marathon可以调度容器化服务的工具,有healthcheck功能,假如php-fpm挂了,healthcheck检查的是php-fpm端口,maraton会杀掉这个容器,重新起一个instance。
    假如所有进程都放一个容器里,虽然可以建立多个health,但是healthcheak之间or的关系,假如nginx和php-fpm都挂了,healthcheck还是通过的。
    也可以一个healthcheck通过nginx访问一个php页面,这样两个服务进程都检查到了。但是如果其中一个挂了了,对容器进程重启代价挺大的。

    回复
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-04-25 09:03:28

    比如一个应该有一个web应用, 和一个数据库组件,
    在web经常更新的情况下应该把两个分开, 如果稳定版, 可以用几年不更新的就放一起吧.

    回复
    0
  • 取消回复