Heim > Fragen und Antworten > Hauptteil
使用一个容器管理多个应用服务进程?还是每个服务进程创建一个容器?
各区别是?
哪儿2020-02-27 14:48:41
推荐一款神器应该可以帮到你,云帮手是一款功能强大的全面集中化管理云主机软件。不仅是兼容Linux系统,Windows也是可以用的。实际上使用功能还是挺不错的,因为功能全面且安装简单,基本都是傻瓜式一键搞定,中间添加云主机的话,首次要添加探针,以后就基本可以在面板上操作了,这个是挺方便的。主流云那几个基本我都试过没问题,系统也没有问题,这个倒是挺省心的,不会说存在什么云商的或者系统的就用不了,又要另外找软件。大致功能如下:
1.批量管理多台云主机;
2.兼容性强大,兼容市面基本所有的云商云主机,兼容操作系统;
3.操作简单,可视化界面预览资源、一键修复、一键部署;
4. 可以远程登录云主机FTP桌面,处理云主机上的文件;
5.监控和,资源还有告警功能,这个是挺好的,不用盯着看;
6.系统修复功能,这个是挺实用也比较必须的;
7.免费使用。总得来说功能还是挺全的,不存在需要又要另外找软件的尴尬,一个云帮手软件基本满足了所有需求。
習慣沉默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的业务
大家讲道理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页面,这样两个服务进程都检查到了。但是如果其中一个挂了了,对容器进程重启代价挺大的。
曾经蜡笔没有小新2017-04-25 09:03:28
比如一个应该有一个web应用, 和一个数据库组件,
在web经常更新的情况下应该把两个分开, 如果稳定版, 可以用几年不更新的就放一起吧.