
公司内部准备用 docker 逐步替换掉原本直接搭在 LVS 上的测试环境,将分散的物理机资源整合起来。
按照我的思路,新拿一台 LVS 跑 docker,然后一个服务起一个容器,容器配好、互通正常,基本这活儿就算结了。
结果今天突然来个需求,说让我把几个服务一起塞到一个容器里(譬如一个 container 里面同时跑 NGINX+MySQL+Tomcat )。
单容器多服务这种做法到底有没有意义……我感觉这又回到 LVS 的形式上了。
1 akagishigeru 2018 年 10 月 31 日 推荐一个 container 一个应用 |
2 CivAx OP @JaguarJack 对我也是这么认为的,但是应该怎么列举优势说服他? |
3 LoliconInside 2018 年 10 月 31 日 @CivAx 一旦一个容器异常退出整个业务就全挂了 感觉只能这么和他说 |
4 hoiyd 2018 年 10 月 31 日 你需要 kubernetes 的 pod |
5 nooper 2018 年 10 月 31 日 脑子为啥有问题,直接把服务干挂了。 |
6 zpf124 2018 年 10 月 31 日 单单 nginx + tomcat 我还能理解一些, 把 mysql 都加上就完全不应该了吧? |
7 Keria 2018 年 10 月 31 日 一些开源软件为了用户开箱即用把很多东西塞进一个容器,自己搭服务觉得没必要,有编排呀~ |
8 ksco 2018 年 10 月 31 日 1. 更加易于横向扩展 2. 更容易定位问题 3. 更容易升级版本号 4. 日志更加清晰明确 ...... |
9 helone 2018 年 10 月 31 日 gitlab 官方也是这么封装的,其实无非就是一炸都炸和不方便扩展而已。。。 |
10 xiqingongzi 2018 年 10 月 31 日 ngx + tomcat 问题不是很大。mysql 不应该。 |
11 ixiaohei 2018 年 10 月 31 日 你们需要 docker 编排和 k8s 这种东西。放一个容器,supervisor 一挂全部挂。另外水平扩展也是一起扩,反而没有体现 docker 的优势,轻量虚拟化和资源隔离。 |
12 liuguang 2018 年 10 月 31 日 当然是一个容器一个应用了,docker 如果发现了你的容器进程退出了,可以帮你自动重启。 但是如果多个放在一个 container 里面,如果非主线程退出了,你完全不知道,docker 也不会认为你的容器有问题。 |
13 fl2d 2018 年 10 月 31 日 一损俱损 一荣俱荣 |
14 akagishigeru 2018 年 10 月 31 日 @CivAx 例如你有 php 和 java 两个 container 都需要连接 mysql 服务呢? mysql 难道打包两次吗 |
15 kimqcn 2018 年 10 月 31 日 没啥问题啊,这仨东西都可以做成绿色版的,解压即用.放到一个容器里,可不考虑网络连接问题. |
16 wizardoz 2018 年 10 月 31 日 他是不是不知道 docker-compose ? |
17 whileFalse 2018 年 10 月 31 日 所以这个把所有东西揉一起的需求的目的是什么? |
18 zjsxwc 2018 年 10 月 31 日 docker-compose +1 |
19 fullpowers 2018 年 10 月 31 日 数据库放另外一个容器就行了,其它打包一起 |
20 xenme 2018 年 10 月 31 日 想折腾,你都可以当成虚拟机用,打包一个配置啥的都简单,短期可能更快 微服务化,单独打包,得考虑编排了,前期可能有人觉得复杂 可以分步来么,不可能一口吃个胖子 |
21 yule111222 2018 年 10 月 31 日 没意义 |
22 xuanbg 2018 年 10 月 31 日 没有意义,一个容器还是多个容器,差别仅仅是一点点磁盘空间罢了。 |
23 sammo 2018 年 10 月 31 日 via iPhone 把 container 当一层 “普通 vps 的 linux 系统” 式的虚拟机嘛 ... |
24 Vhc 2018 年 10 月 31 日 支持一楼 |
25 likuku 2018 年 10 月 31 日 容器当虚拟机来用的典型案例 |
26 CMGS 2018 年 10 月 31 日 很简单。。 你跟他说,你要塞,OK,你以哪个为主进程? 多进程容器最大的问题是,从容器外部只看得到主进程的状态,容器本身生命周期是和主进程完全同步的。 也就是说,要么你放弃子进程生命周期的控制,要么你自己实现子进程的监控重启各种生命周期的事情。 既然要搞这么多幺蛾子,为啥不 vm+systemd 搞定一切…… |
28 kidlj 2018 年 10 月 31 日 via iPhone Docker by design 一个容器一个进程。 |
29 slaneyang 2018 年 10 月 31 日 docker-compose ++ |
30 CuminLo 2018 年 10 月 31 日 既然是用与测试环境,这个问题应该不大吧,主要是你想不想的问题了。 |
31 NUT 2018 年 10 月 31 日 docker 的本质是进程。除了主进程其他进程都是野孩子。所以你需要容器编排。k8s 的 pod 可以搞成多容器的,如果有启动顺序要求可以试试 statusfulset 这个玩意。 |
32 lihongjie0209 2018 年 10 月 31 日 k8s 吧 |
33 kaneg 2018 年 10 月 31 日 via iPhone 用它来搭建测试环境,用来简化部署和测试的效率,那就越简单越好,做到傻瓜式的开箱即用,所有的服务都打到一起是很好的选择。当然再进一步用 docker compose 也是很不错的,至于 k8s 在这种场景下就有点大炮打蚊子了 |
34 beginor 2018 年 10 月 31 日 via Android 如果你的产品安装复杂,可以简化安装,比如 gitlab |
35 Tink PRO 这个东西得辩证来看 |
36 lfzyx 2018 年 10 月 31 日 如果你是要把分散的服务器资源整合起来,那用 k8s 就非常适合了,然后 k8s 里的 pod 也是可以包含多个 container 的,非常符合几个服务一起塞到一个 pod 里的需求 |
37 liukanshan> 2018 年 11 月 1 日 不太明白把所有应用塞进一个容器的做法 docker-compse 就是为了解决这种情况的 也许这种方式更适合 vagrant。 |
38 ooh 2018 年 11 月 1 日 via Android 解耦,三个应用想不清楚就幻想三百个应用 |
39 binux 2018 年 11 月 1 日 测试环境这么搞没毛病啊,难道你测试环境还需要跑 300 个应用负载均衡吗? 测试环境这么搞的好处就是开箱即用,可以同时跑多个测试环境,然后玩坏了直接干掉重建就好了。挂就挂了呗,测试环境哪来的业务啊。 |
40 thrall 2018 年 11 月 1 日 测试环境就打包到一起没什么问题 |
41 vindurriel 2018 年 11 月 1 日 via iPhone 一个 container 一个进程 容器编排服务一般是这么假设的 |
42 duhongle 2018 年 11 月 1 日 推荐使用 docker-compose,nginx,tomcat,mysql 还是分开部署比较好 |
43 bayker 2018 年 11 月 1 日 请问为啥要放一起?给个理由。感觉没有任何理由能说服我放到一个容器里。 |
44 shylockhg 2018 年 11 月 1 日 你这样一个容器没法编排。。一炸全炸 |
45 liuyanjun0826 2018 年 11 月 1 日 象征意义大于实际意义 |
46 thisisgpy 2018 年 11 月 1 日 简单来说,你把所有东西 run 在一个容器里,如果容器里的 mysql 有容器外的应用也在用,那你升级你的应用重启容器时,所有依赖容器内 mysql 的服务都会瘦影响。 |
47 lrh3321 2018 年 11 月 1 日 组成一个整体,里面只对外开放一个应用服务的时候也不是不行。 |
48 mortonnex 2018 年 11 月 1 日 docker-compose 完美解决 |
49 tcsky 2018 年 11 月 1 日 测试环境完全还可以啊, 开发测试维护起来都很方便 |
50 xiaoxinshiwo 2018 年 11 月 1 日 个人觉得不合适,容器的一大特点就是隔离性啊 |
51 Outshine 2018 年 11 月 1 日 提需求的人明显不懂 docker 的意义,放在一个 container 里和现在有啥区别么?反而还加了一层。 |
52 tailf 2018 年 11 月 1 日 跟他们说性能有问题,docker 的 tcp-proxy 对应用内大流量的支持不足 |
53 momocraft 2018 年 11 月 1 日 给不会的人用时有意义 (一行 docker run 能启动全套服务) 会用 docker-compose / k8s 这些东西时就多余了 |
54 y835L9DyC5XD09kq 2018 年 11 月 1 日 不要把鸡蛋都放在一个篮子里 |
55 MarioxLinux 2018 年 11 月 1 日 作为运维我不会这样做,因为这和传统的部署方式并没太大差别,一定要说有没有意义,对开发来说是有意义的好处是可以在开发调试过程中更便捷 |
56 CoderGeek 2018 年 11 月 1 日 k8s docker |
57 artandlol 2018 年 11 月 1 日 yaml 配置文件语言的兴起,可以让程序自动配置 yaml 编排更加智能化 小巧 隔离是容器的特点,塞进去除了能玩一玩没别的好处 我这个容器就塞进去很多,rootfs 挺好的,push 容器时可以不用上传全部 https://hub.docker.com/r/jingslunt/linux/ |
58 eas 2018 年 11 月 1 日 没有意义 |
59 skylancer 2018 年 11 月 1 日 意义就是 1. 懒人的超快速部署(呵呵) 2. 给新手学习的包 3. 闲得蛋疼或者是傻子 |
60 xiaoyunwei2 2018 年 11 月 1 日 测试环境 随便搞咯 |
61 ray1888 2018 年 11 月 1 日 你就每个进程开一个容器,用一个 docker-compose 拉起来不就可以了? 如果不用 K8s 的情况下 |
62 tabris17 2018 年 11 月 1 日 如果不打算扩容也无所谓了 |
63 lionseun 2018 年 11 月 2 日 via Android 那还用 dock er 干嘛? |
64 huobazi 2018 年 11 月 3 日 via iPhone 觉得省空间? |