Docker 初体验--顺带吐槽下 Daocloud 的文档

2016-04-26 05:41:03 +08:00
 pimin

Docker 初体验--顺带吐槽下 Daocloud 的文档


最近在学 flask,想自己写个博客练手.遇到的困难远比自己想象得多,

国内几家大厂情况:

以下都是说的都是练习环境,最低配置.

遇到 docker

今天逛 V2 看到 /t/274121 有人推荐 Daocloud,听说免费就去折腾下看看. 完全没接触过 Docker,只知道它的名字叫容器,是轻量虚拟化方案. 注册之后登陆控制台,一直是个吃豆人,后来发现是 DaoVoice 脚本导致的, 建议处理下吧.


感觉文档对新手不够友好

反正是进来了,按照我的想象应该就是找个容器点几下就能运行了才对.
看到有个镜像仓库,我想这应该就是我这种菜鸟要的!
结果发现基础系统环境或者是 Python 相关都不能部署到 daocloud!
我并不清楚部署到主机是什么意思!

左点右点在 DaoCloud 的 Github 看到一些 Deomo,fork 之后就试着代码部署.
执行节点我选的国内,想着国内访问速度会好些.
等了很久还是没部署好,去吃个饭回来说是超时了.
我的内心是崩溃的.
不知道怎么办才好
我最后的选择不是去看 DaoCloud 的文档,去看 Docker 的入门.
发现问题比想象得简单得多
基本上只要几分钟你就能知道怎么回事,我在本地很快部署了自己的镜像.
也找到了线上部署失败的原因
pull 一个 ubuntu 镜像之后进 shell 安装各种需要的东西.发现速度很慢.
Ubuntu 的 apt 源是国外的.

Running in 6be8ad6cb255

Ign http://archive.ubuntu.com trusty InRelease Get:1 http://archive.ubuntu.com trusty-updates InRelease

看完入门文档然后自己写了一个 Dockerfile,顺利定制了第一个容器.
发现是真的非常简单,为什么 DaoCloud 连号称做了那么多工作,还没有一页 Docker 入门教程来得实用.


FROM ubuntu
MAINTAINER pimin "xxxx@qq.com"
RUN sed -i "s/archive.ubuntu.com/cn.archive.ubuntu.com/g" /etc/apt/sources.list
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["app.py"]

代码比较简单,就是从 Ubuntu 镜像创建一个容器,先更换 Ubuntu 源为国内源,然后安装 Python,pip 再用 pip 安装 requirements.txt 内指定的依赖. 最后运行 flask 的最小 demo. 然后代码 push 到 github 之后通过 DaoCloud 的代码构建,只要 3 分钟!!
我当时是震惊的! DaoCloud 为什么不能写一行替换替换为国内源的代码.
在我看来那个什么镜像加速都没有改一下源来得实用.
如果你代码构建做得好,像我这样新手一次就就可以代码构建成功!
这样的失败体验很有可能把我们挡在门外

项目地址在 https://github.com/28sui/dao-flask

小结

Docker 和 github 结合确实是非常方便的方案,push 之后自动重新部署.
不清楚如果是集群的话重新部署需不需要下线,会不会自动调度部署顺序.
感觉定制性非常高! 有疑问的是
1.安全性,demo 只暴露了一个端口,按照传统思路来用 docker 会不会增加风险?
2.动态调整问题.通过 Dockerfile 做调整都要重新部署.对于我这样的新手学习来说,不如 vps 之类来得方便.
如果我按 VPS 那样使用,SSH 进去做的修改重启之后就会丢失.我知道我应该在本地先调试好再 push. 3.如果我有几个服务,是不是分几个容器更靠谱一些?这样运行成本是不是就高很多.
这样看来 Daocloud 的免费基本上也就是练习用.专业版只是开了功能,对于资源使用额度没有提升.
入门级的话,成本上升是不是太快了?
比阿里云这些有价格优势么?
4.免费只有 2x 资源,确实是太小了,绑定微信有 3x 才算能用.2x 运行环境,1x 数据库.
不过有效期只有半年.总体来说并不是一个长期使用的方案.
当然作为学习环境 50M 的数据库是完全足够了. 暂时就入这个坑吧!

8831 次点击
所在节点    云计算
24 条回复
YUX
2016-04-26 06:43:12 +08:00
是我在你给出 V2 的那个帖子里推荐 DaoCloud ,部署到主机的意思是你有一台自己的主机,比如说阿里云的 ECS ,或者 AWS 的 EC2 ,然后在 DaoCloud 控制台->我的集群->自有集群->添加主机->选择主机操作系统后按步骤部署 DaoTools 。这样方便通过 DaoCloud 来对主机进行部署。
如果想通过 DaoCloud 部署 Flask 也是非常简单的,在 DaoCloud 控制台->镜像仓库->DockerHub 仓库->搜索 tiangolo/uwsgi-nginx-flask->部署最新版本->起个名字->运行环境->我的主机->就可以找到刚刚在上一步添加的你的主机了,之后就可以部署完成
首先我想对于 Docker 来讲, DaoCloud 肯定不是必须的,但通过容器化的管理来对主机进行部署是一个非常方便高效的方案, DaoCloud 无疑使这种新技术更加平易近人,也更加适应国内的网络环境
对于 Docker(DaoCloud)部署 Flask 可以参考我的一篇小文章
https://blog.yux-io.com/2016/04/22/setup-flask-with-docker/

我觉得使用 DaoCloud 的免费 3x 额度是肯定不够用的,但在自己主机上部署前小试一把还是挺实用的,而且往 DaoCloud 上充钱碓配置的性价比也是非常低的, 16x 每个月会花费您 94 元,这才是 2G 内存的一个容器。
但是通过 DaoCloud 部署自己的主机则是免费的,我觉得这一点是非常良心的, DaoCloud 的国内镜像的速度比 Docker 的源速度快了很多很多
YUX
2016-04-26 06:46:17 +08:00
我觉得我用 Docker 并不是为了研究 Docker ,对我来说这只是一个小工具,部署好了容器,之后该干嘛干嘛。
yxwzaxns
2016-04-26 07:26:20 +08:00
我想说的是,代码构建是在国外完成的,不用改软件源,不用选国内,那是有特殊需要才选的
pimin
2016-04-26 07:38:01 +08:00
@YUX 我觉得主要还是运维方式带来的变革,可能很多运维会下岗.
pimin
2016-04-26 07:39:15 +08:00
@yxwzaxns
萌新还以为构建和运行是在一起的
我考虑国内访问会快点哪
YUX
2016-04-26 07:39:40 +08:00
@pimin 运维也会不断学习新技术啊,想把 Docker 放到生产环境还是有不少坑的(据说)。但我不是专业队的,对我来说就是简单的省了不少事
pimin
2016-04-26 07:56:24 +08:00
@YUX
我是菜鸟队的,纯属个人观点
一把年纪在学编程..
wph95
2016-04-26 07:57:18 +08:00
你看的教程不是这个吧 http://open.daocloud.io/tag/python-kai-fa-zhe-de-docker-zhi-lv/
要是说这个教程看不懂没说清,你可以来揍我
yxwzaxns
2016-04-26 08:00:16 +08:00
@pimin 访问和构建是两回事,代码构建完成后会拉回国内部署
pimin
2016-04-26 08:01:01 +08:00
@wph95
我点这个教程之前不知道点哪里就点到了 github
看到 python-sample-base-image,然后部署了好久好久..往下看你这个教程根本没机会部署
等那个失败我把两个都删了
你可以等今天晚上 8-9 点试试在国内节点构建下 python-sample-base-image
sakeven
2016-04-26 08:33:58 +08:00
我们一直推荐国外构建的。。。
zacard
2016-04-26 09:26:24 +08:00
然而我却角色 DaoCloud 的文档蛮好的。。。
qqmishi
2016-04-26 09:43:27 +08:00
daocloud 每次我部署 php 都是卡在开端口的地方,什么都不显示,,,
还有很多只支持部署到自有主机,但我都有主机了直接在上面玩就好了啊,为啥非得用 daocloud 的服务呢,国外 vps 又不存在速度问题,,,
pimin
2016-04-26 09:48:30 +08:00
@qqmishi
EXPOSE 5000 改成你的 web 端口比如 80 就好了
pimin
2016-04-26 09:50:55 +08:00
@qqmishi
daocloud 为主机提供的是一个加速国内安装镜像的服务。
比如 Ubuntu 镜像 200M ,从官网下下来可能要很久, daocloud 加速之后快很多。
qqmishi
2016-04-26 09:58:25 +08:00
@pimin 不不不,原来是有 TCP 和 HTTP 可选,现在直接没选项,然后就没法进行下一步了。
加速器在本机上装的时候对速度帮助很大,但我的自有主机都是国外的没什么用啊,,,也就剩个管理的作用
Tink
2016-04-26 12:02:02 +08:00
我只是觉得 daocloud 的网站逻辑有点乱
zongwan
2016-04-26 12:18:05 +08:00
专业版的收费规则有点乱
django 不想把密码放到配置文件里 进入 ssh 手动设置需要专业版
改完后一直没管只看看日志,专业版还在收费。之后关闭了专业版 依然可以运行
那么专业版只需要在需要改一下的时候开启,改完换回社区版。具体收费就不清楚是否是按月了
gevin
2016-04-26 12:44:35 +08:00
我的博客就是用 Flask 做的,然后部署在 DaoCloud 上,你有兴趣可以参考一下

https://github.com/flyhigher139/OctBlog
wph95
2016-04-26 12:53:12 +08:00
@zongwan 本来容器就不该配合 ssh , 不然那就成 vps 了
我 django 密码 通过环境变量的方式传入进去的

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

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

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

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

© 2021 V2EX