1
liujiantao 2015-06-22 11:30:12 +08:00 via Android
暂时没有这个意向,可能一些大规模网站应对各种各样的需求会考虑,拆的细同样可以保证以后迭代各版本有优势 (个人观点,轻喷
|
2
phoenixlzx 2015-06-22 11:30:56 +08:00
我只知道在之前公司折腾 docker 的时候差点把我的 SSD 写坏掉。
|
3
Livid MOD OP @phoenixlzx SSD 什么型号?
|
4
johnsmith123 2015-06-22 11:36:29 +08:00
没有意义,docker的存在价值就是鸡肋。只不过一些**跟风投钱罢了。
我认为:没钱还敢用docker/openstack? |
5
phoenixlzx 2015-06-22 11:39:18 +08:00
@Livid Intel 530 240G
我不知道是不是我的方法不对,执行 Dockerfile 的时候每个步骤都会创建一个镜像快照(?),写盘数据量貌似很大,几乎不能再进行其他磁盘操作(打开其他程序也不可以) |
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 这样打包的方式管理。 |
7
Livid MOD OP |
8
jokester 2015-06-22 11:55:50 +08:00
only using for test purpose
|
9
phoenixlzx 2015-06-22 11:57:58 +08:00
@Livid 我敲了... 然后 iostat 等 docker 跑完了才起来于是一切正常....
|
10
loading 2015-06-22 12:02:33 +08:00 via Android
我觉得,docker是给大公司超大云用的,几个人玩起来比较累,不值得。
|
11
fangpeishi 2015-06-22 12:10:28 +08:00 1
@phoenixlzx 姿势可以优化,写盘数据量很大猜测因为Dockerfile里面每一个命令都会生成一层镜像。不过Dockerfile有构建缓存,把一些固定性的命令写在前面,写在一起,会变动的命令写在结尾,这样每次构建的时候可以最大化的利用缓存。以后每次新加的命令也尽可能写到最末尾。
|
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的包管理都帮你封装好了。 |
13
evlos 2015-06-22 12:21:06 +08:00 via iPhone 1
我用 dokku 来部署自己的网站,跟 Heroku 一样的 git 部署方式,超方便。
|
14
adjusted 2015-06-22 12:25:31 +08:00
docker 的设计貌似是多个进程每个进程快速启动和关闭来部署,那mysql怎么办 ?
|
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 实现代码实在是啧啧啧,因此编排和资源控制才是系统工程师应该关注的地方。 |
16
paicha 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 指向新容器,然后删除旧容器。 |
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 |
19
evlos 2015-06-22 13:05:01 +08:00
直接用 docker 很难体现出它的优势,毕竟只是一个容器引擎,再装一个比如像 dokku 这样的 mini-paas 平台,才能发能发挥出引擎的效能。
|
20
fsw90628 2015-06-22 17:42:07 +08:00
其实 docker 是一个经历了好几个阶段才达到的结果:
虚拟机 - Puppet/Chef/ansible - docker Docker 兼顾了 configuration 的灵活性 和 虚拟机的可迁移性 (portability) 和隔离功能。 ps. 公司用 docker 做 auto build 和 auto scale |
21
fredcc 2015-06-22 18:18:55 +08:00
docker方便了快速部署异构环境的工作,不过现阶段管理工具门槛还略高。
我们是因为异构环境和设备资源原因,使用esx和xen资源消耗过大,改为使用docker跑应用服务器,mysql和nginx还使用传统方案,memcache等视情况而定。 |