把多个应用服务塞进一个 docker 容器里有没有意义

2018-10-31 16:04:34 +08:00
 CivAx

公司内部准备用 docker 逐步替换掉原本直接搭在 LVS 上的测试环境,将分散的物理机资源整合起来。

按照我的思路,新拿一台 LVS 跑 docker,然后一个服务起一个容器,容器配好、互通正常,基本这活儿就算结了。

结果今天突然来个需求,说让我把几个服务一起塞到一个容器里(譬如一个 container 里面同时跑 NGINX+MySQL+Tomcat )。

单容器多服务这种做法到底有没有意义……我感觉这又回到 LVS 的形式上了。

15407 次点击
所在节点    程序员
64 条回复
yule111222
2018-10-31 17:18:23 +08:00
没意义
xuanbg
2018-10-31 17:46:51 +08:00
没有意义,一个容器还是多个容器,差别仅仅是一点点磁盘空间罢了。
sammo
2018-10-31 18:03:48 +08:00
把 container 当一层 “普通 vps 的 linux 系统” 式的虚拟机嘛 ...
Vhc
2018-10-31 18:10:19 +08:00
支持一楼
likuku
2018-10-31 18:14:04 +08:00
容器当虚拟机来用的典型案例
CMGS
2018-10-31 18:17:21 +08:00
很简单。。
你跟他说,你要塞,OK,你以哪个为主进程?
多进程容器最大的问题是,从容器外部只看得到主进程的状态,容器本身生命周期是和主进程完全同步的。
也就是说,要么你放弃子进程生命周期的控制,要么你自己实现子进程的监控重启各种生命周期的事情。
既然要搞这么多幺蛾子,为啥不 vm+systemd 搞定一切……
rogwan
2018-10-31 18:22:30 +08:00
@helone gitlab 这么做情有可原,毕竟从头开始配好 gitlab 很多人就放弃了
kidlj
2018-10-31 18:30:41 +08:00
Docker by design 一个容器一个进程。
slaneyang
2018-10-31 19:30:41 +08:00
docker-compose ++
CuminLo
2018-10-31 19:43:43 +08:00
既然是用与测试环境,这个问题应该不大吧,主要是你想不想的问题了。
NUT
2018-10-31 19:46:21 +08:00
docker 的本质是进程。除了主进程其他进程都是野孩子。所以你需要容器编排。k8s 的 pod 可以搞成多容器的,如果有启动顺序要求可以试试 statusfulset 这个玩意。
lihongjie0209
2018-10-31 19:50:56 +08:00
k8s 吧
kaneg
2018-10-31 20:40:22 +08:00
用它来搭建测试环境,用来简化部署和测试的效率,那就越简单越好,做到傻瓜式的开箱即用,所有的服务都打到一起是很好的选择。当然再进一步用 docker compose 也是很不错的,至于 k8s 在这种场景下就有点大炮打蚊子了
beginor
2018-10-31 21:30:56 +08:00
如果你的产品安装复杂,可以简化安装,比如 gitlab
Tink
2018-10-31 21:45:36 +08:00
这个东西得辩证来看
lfzyx
2018-10-31 23:09:07 +08:00
如果你是要把分散的服务器资源整合起来,那用 k8s 就非常适合了,然后 k8s 里的 pod 也是可以包含多个 container 的,非常符合几个服务一起塞到一个 pod 里的需求
liukanshan
2018-11-01 00:20:38 +08:00
不太明白把所有应用塞进一个容器的做法 docker-compse 就是为了解决这种情况的 也许这种方式更适合 vagrant。
ooh
2018-11-01 03:40:13 +08:00
解耦,三个应用想不清楚就幻想三百个应用
binux
2018-11-01 03:53:16 +08:00
测试环境这么搞没毛病啊,难道你测试环境还需要跑 300 个应用负载均衡吗?
测试环境这么搞的好处就是开箱即用,可以同时跑多个测试环境,然后玩坏了直接干掉重建就好了。挂就挂了呗,测试环境哪来的业务啊。
thrall
2018-11-01 05:06:20 +08:00
测试环境就打包到一起没什么问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/503058

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX