docker 应用和数据库应该像在同一镜像里吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
comeluder
V2EX    程序员

docker 应用和数据库应该像在同一镜像里吗?

  •  
  •   comeluder 208-01-17 09:32:46 +08:00 5244 次点击
    这是一个创建于 2842 天前的主题,其中的信息可能已经有所发展或是发生改变。
    docker 应用和数据库应该像在同一镜像里吗,求教各路大神~~~~
    25 条回复    2018-01-18 16:40:35 +08:00
    solooo
        1
    solooo  
       2018-01-17 09:35:13 +08:00
    分开,应用是应用,数据库是数据库
    comeluder
        2
    comeluder  
    OP
       2018-01-17 09:41:15 +08:00
    @solooo 我也是这么想,但我们经理想弄在一起,方便,我也感觉不太合理,问问大家怎么弄的~~
    rockyou12
        3
    rockyou12  
       2018-01-17 09:43:45 +08:00
    一定要分开。如果你是单机部署,写个 docker-compose.yml 就好了,如果是 kubelet 这些也有 pod 这些抽象,分开了一样方便。
    wellsc
        4
    wellsc  
       2018-01-17 09:47:03 +08:00
    不应该,container 应该是无状态的
    codehz
        5
    codehz  
       2018-01-17 09:51:17 +08:00 via Android
    @wellsc 我觉得楼主说的应该是应用和数据库程序都在一个镜像里。。。
    codehz
        6
    codehz  
       2018-01-17 09:52:49 +08:00 via Android
    我个人认为应用和数据库应该分离在不同的镜像,这样可以方便单独重新部署应用。。。当然如果是 demo 这种类型的项目,就是怎么方便怎么来的
    neoblackcap
        7
    neoblackcap  
       2018-01-17 09:54:39 +08:00
    k8s 就是分开的
    mooncakejs
        8
    mooncakejs  
       2018-01-17 09:56:58 +08:00 via iPhone
    如果是自己公司业务持续升级的。数据库分开,如果是阿里云之类的,最好用 RDS 之类的产品。
    如果是外包或者产品发布的,打成一个包也不错。gitlab 就是个很好的例子。
    wellsc
        9
    wellsc  
       2018-01-17 09:57:36 +08:00
    @codehz #5 就算是和数据库程序放在一起也是有状态的,数据库程序其实就是代表了数据,数据库程序运行不起来应用也读不了数据对不对?
    zhengxiaowai
        10
    zhengxiaowai  
       2018-01-17 10:04:51 +08:00
    数据库都不应该放在 Docker 里面
    liuzelei
        11
    liuzelei  
       2018-01-17 10:07:38 +08:00
    @zhengxiaowai nod,db 这种重度 io 的 app,不应该放在 docker 中部署。
    abmin521
        12
    abmin521  
       2018-01-17 10:18:36 +08:00
    挂了 volume 随便玩
    yonoho
        13
    yonoho  
       2018-01-17 10:22:02 +08:00
    @comeluder 你要是拗不过他就在 dockerfile 里严格分层,万一以后玩不转了直接拆成两个 dockerfile。
    fatduo
        14
    fatduo  
       2018-01-17 10:25:23 +08:00
    个人认为数据库这些有状态服务,不应该使用容器和容器编排技术,至少生产环境不应该。
    gamexg
        15
    gamexg  
       2018-01-17 11:21:31 +08:00 via Android
    分开,扩展方便。
    forgetandnew
        16
    forgetandnew  
       2018-01-17 11:48:25 +08:00 via iPhone
    看需求
    ETO
        17
    ETO  
       2018-01-17 11:49:45 +08:00
    分开
    trepwq
        18
    trepwq  
       2018-01-17 11:52:34 +08:00
    在一个容器里和虚拟机有什么区别。。
    ifaii
        19
    ifaii  
       2018-01-17 12:24:22 +08:00 via iPhone
    @trepwq 区别老大了,系统级和应用级的区别
    20has
        20
    20has  
       2018-01-17 12:54:49 +08:00 via Android
    要我说就无所谓 只要你的数据库卷做了持久化 不管是 data volume 还是分布式存储 都行 前提是业务访问量不大
    monnand
        21
    monnand  
       2018-01-17 12:57:50 +08:00 via Android
    @fatduo #13

    > 个人认为数据库这些有状态服务,不应该使用容器和容器编排技术,至少生产环境不应该。

    至少在 Google 所有东西都是在容器(Borg 系统)里的。包括各种数据库类应用,比如 BigTable Spanner 等

    但是数据库存储的内容不要做成镜像的一部分。这一点 Kubernetes 应该已经做了一套方案
    feverzsj
        22
    feverzsj  
       2018-01-17 13:01:03 +08:00
    哈哈,当然可以放在一起,只是再部署的时候,你得把容器重新保存成镜像
    fatduo
        23
    fatduo  
       2018-01-17 14:17:14 +08:00
    @monnand
    我说的情况是容器和机器没有绑定的情况,如果容器和机器完全绑定,这和在这台机器上直接起服务没有太多本质区别。
    k8s 是提供了 statefulset 作为有状态服务的部署,可以通过 pvc 挂载 volume 的形式,实现服务(pod)漂后重新挂载存储,数据不丢失。但这种基于网络存储并不是适合 db 这种重 io 的服务。。。
    HuHui
        24
    HuHui  
       2018-01-17 17:07:31 +08:00
    分开
    julyclyde
        25
    julyclyde  
       2018-01-18 16:40:35 +08:00
    @trepwq 虚拟机能重新开机,容器不能吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1189 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 17:51 PVG 01:51 LAX 10:51 JFK 13:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86