大家有谁开始在自己的网站基础架构里用 Docker 了么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
56.4D
443.61D
V2EX    Docker

大家有谁开始在自己的网站基础架构里用 Docker 了么?

  •  
  •   Livid
    PRO
    2015-06-22 11:26:46 +08:00 8779 次点击
    这是一个创建于 3765 天前的主题,其中的信息可能已经有所发展或是发生改变。
    感觉按照 Docker 的设计哲学,一切应该尽可能拆得非常细,存储应该尽可能依赖各种云存储而不是 host。

    但是对于一些本身很简单,但是可能会有多个依赖(Redis,Memcached,Mongo,MySQL……)的应用,Docker 似乎让事情变得更复杂了。

    比如就目前 V2EX 的规模来说,我暂时还没有想明白上 Docker 的价值。

    而且,假设部署新代码就是部署一个新的 container,那么在切换的过程中,为了保证完全不影响流量的稳定,还是有一些定制工具需要开发。比如,在前面加上 HAProxy 或者 Nginx,然后新的 container 确认起来(通过了所有的自动化测试)之后,将 LB 里的后端端口指向新的 container,然后 rm 旧的。
    21 条回复    2015-06-22 18:18:55 +08:00
    liujiantao
        1
    liujiantao  
       2015-06-22 11:30:12 +08:00 via Android
    暂时没有这个意向,可能一些大规模网站应对各种各样的需求会考虑,拆的细同样可以保证以后迭代各版本有优势 (个人观点,轻喷
    phoenixlzx
        2
    phoenixlzx  
       2015-06-22 11:30:56 +08:00
    我只知道在之前公司折腾 docker 的时候差点把我的 SSD 写坏掉。
    Livid
        3
    Livid  
    MOD
    OP
    PRO
       2015-06-22 11:31:27 +08:00
    @phoenixlzx SSD 什么型号?
    johnsmith123
        4
    johnsmith123  
       2015-06-22 11:36:29 +08:00
    没有意义,docker的存在价值就是鸡肋。只不过一些**跟风投钱罢了。

    我认为:没钱还敢用docker/openstack?
    phoenixlzx
        5
    phoenixlzx  
       2015-06-22 11:39:18 +08:00
    @Livid Intel 530 240G

    我不知道是不是我的方法不对,执行 Dockerfile 的时候每个步骤都会创建一个镜像快照(?),写盘数据量貌似很大,几乎不能再进行其他磁盘操作(打开其他程序也不可以)
    HowardMei
        6
    HowardMei  
       2015-06-22 11:43:07 +08:00   1
    你的感觉是对的,目前Docker最大的价值是多用户环境隔离和Customization Freeze,我是Saltstack + Docker搭配着用,主要是把一些配置和代码改动存成模板,转变成客户可点击的按钮,自有网站用Docker没太大意义,后台运维工作会增加。

    其实Microservices只是最近吹得比较热,有很多人反对,因为服务依赖这个坑一点都不小,只适合特定的App,一般的Python程序,完全可以用类似 https://github.com/pantsbuild/pex 这样打包的方式管理。
    Livid
        7
    Livid  
    MOD
    OP
    PRO
       2015-06-22 11:43:10 +08:00
    @phoenixlzx 530 是很好的 SSD 了。

    执行操作的时候有没有看到 iostat?
    jokester
        8
    jokester  
       2015-06-22 11:55:50 +08:00
    only using for test purpose
    phoenixlzx
        9
    phoenixlzx  
       2015-06-22 11:57:58 +08:00
    @Livid 我敲了... 然后 iostat 等 docker 跑完了才起来于是一切正常....
    loading
        10
    loading  
       2015-06-22 12:02:33 +08:00 via Android
    我觉得,docker是给大公司超大云用的,几个人玩起来比较累,不值得。
    fangpeishi
        11
    fangpeishi  
       2015-06-22 12:10:28 +08:00   1
    @phoenixlzx 姿势可以优化,写盘数据量很大猜测因为Dockerfile里面每一个命令都会生成一层镜像。不过Dockerfile有构建缓存,把一些固定性的命令写在前面,写在一起,会变动的命令写在结尾,这样每次构建的时候可以最大化的利用缓存。以后每次新加的命令也尽可能写到最末尾。
    qq286735628
        12
    qq286735628  
       2015-06-22 12:14:37 +08:00
    可能docker对于自己写的代码,才有比较强的存在感。

    比如自己写的网站的php部分等,通常自己写的这部分代码,封装和启停机制都稍微弱一点,docker可以做封装,并轻松帮你实现多实力的启停。

    但是对于想Nginx、MySQL、Redis等等这些已经成熟的服务,真的觉得存在感好弱。这些个服务软件,本身就有自己的世界观,每一款都有自己的集群和单机配置方案,用docker之后,总感觉改变了这些服务默认的机制。

    再说docker的快速启动服务这个特性,apt-get install nginx && server nginx start,不见得比docker慢,还是上面的原因,因为这些常用服务,ubuntu的包管理都帮你封装好了。
    evlos
        13
    evlos  
       2015-06-22 12:21:06 +08:00 via iPhone   1
    我用 dokku 来部署自己的网站,跟 Heroku 一样的 git 部署方式,超方便。
    adjusted
        14
    adjusted  
       2015-06-22 12:25:31 +08:00
    docker 的设计貌似是多个进程每个进程快速启动和关闭来部署,那mysql怎么办 ?
    CMGS
        15
    CMGS  
       2015-06-22 12:26:56 +08:00   2
    自行开发的应用上 docker 只是一条出路而已……涉及到拆分啊什么的其实最大的问题并非技术问题,而是政治问题。

    @Livid 说的并没错,带有状态的服务,最重的那一端如何和业务组织编排才是最核心的问题,docker 带来的应用层收益相比于编排的成本实在太低。从这个角度来看 docker 并没有什么卵用。

    所以问题的核心是哪里呢?

    编排系统,尤其是对 Nginx MySQL Redis 这样的本身存在的 binary 服务都能做的编排系统,并非简单的只用于自行开发的业务,这才是 Google Borg(Omega) 的核心价值。Docker 只是在这个编排系统中作为一个容器引擎罢了,说白了 Rkt AppC 哪个不能做啊。

    因此,我组是自行开发了一套编排系统(http://github.com/HunanTV),目前结合 Redis Cluster 3.0 爽得飞起……开发测试机平台也在上线中,目前基本没跑公司看得见的业务(政治问题),反而在成熟服务编排上下了很多的功夫(Dns体系,Redis,Yarn etc...)



    这个视频就是我们对 Redis 集群控制的界面,恩完全无人值守毫秒级的扩容缩容响应,大概这样吧。

    总之我个人认为 Docker 是个 engine,把它看做一个 Platform 实在是高估它了,加之 Docker 实现代码实在是啧啧啧,因此编排和资源控制才是系统工程师应该关注的地方。
    paicha
        16
    paicha  
    PRO
       2015-06-22 12:45:11 +08:00
    对于 leancloud 这种 BaaS 服务商还是很有价值的,资源隔离、降低消耗。
        17
    evlos  
       2015-06-22 12:48:57 +08:00
    给一个新的 Linode 部署我的网站,用 docker 的话我只需要以下几个步骤

    1. docker run --name="mariadb" -d -p 3306:3306 -v /var/storage/mysql:/var/lib/mysql tutum/mariadb

    2. docker run --name="phpmyadmin" -d -p 8080 --link mariadb:mariadb -e VIRTUAL_HOST=db.eternalelf.com maxexcloo/phpmyadmin

    3. 打开 db.eternalelf.com:8080 导入数据库

    4. 在 python 项目里,新建一个文件叫 Procfile 内含 web: python app.py,然后 pip freeze > requirements.txt,git remote add deploy [email protected]:test,git push deploy master,应用就被部署到 test.eternalelf.com 这个地址了

    以后每次我更新代码后直接 git push deploy master 搞定,超方便。

    ---


    如果用 dokku 来部署代码的话,它会自动检测你的新容器是否正常运行之后,再把 nginx 指向新容器,然后删除旧容器。
    evlos
        18
    evlos  
       2015-06-22 12:51:01 +08:00   1
    @adjusted MySQL 可以只部署一个,或者部署多个的话改一下指令中的端口即可

    docker run --name="mariadb" -d -p 外部端口:3306 -v /var/storage/mysql:/var/lib/mysql tutum/mariadb
    evlos
        19
    evlos  
       2015-06-22 13:05:01 +08:00
    直接用 docker 很难体现出它的优势,毕竟只是一个容器引擎,再装一个比如像 dokku 这样的 mini-paas 平台,才能发能发挥出引擎的效能。
    fsw90628
        20
    fsw90628  
       2015-06-22 17:42:07 +08:00
    其实 docker 是一个经历了好几个阶段才达到的结果:

    虚拟机 - Puppet/Chef/ansible - docker

    Docker 兼顾了 configuration 的灵活性 和 虚拟机的可迁移性 (portability) 和隔离功能。

    ps. 公司用 docker 做 auto build 和 auto scale
    fredcc
        21
    fredcc  
       2015-06-22 18:18:55 +08:00
    docker方便了快速部署异构环境的工作,不过现阶段管理工具门槛还略高。
    我们是因为异构环境和设备资源原因,使用esx和xen资源消耗过大,改为使用docker跑应用服务器,mysql和nginx还使用传统方案,memcache等视情况而定。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2223 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 16:07 PVG 00:07 LAX 09:07 JFK 12:07
    Do have faith in what you're doing.
    ubao 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