V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
pimin
V2EX  ›  云计算

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

  •  2
     
  •   pimin · 2016-04-26 05:41:03 +08:00 · 8825 次点击
    这是一个创建于 3132 天前的主题,其中的信息可能已经有所发展或是发生改变。

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


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

    • 不懂前端,看了阵 bootstrap 总算学会了扒皮,
    • SQL 和数据库设计,例如 Tag 不会处理,后来就是直接看 Wordpress 和 Typecho 的数据库表,直接抄抄慢慢理解吧.
    • 最头疼的还是运行环境问题.开始是在 win 下写代码,后来装了 Ubuntu,黑苹果.折腾了好久.

    国内几家大厂情况:

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

    • 阿里云 ACE 价格还算可以,后来被砍了. ECS 最低配置一年都要 600 多了.
    • 腾讯云 费用基本上阿里云差不多,学习用接受不了.
    • 百度云 口碑不如阿里,速度很快,备案支持好.2 毛钱 1 天超值.文档较少,按书上写的 demo 不支持参数启动.比如 runserver 还在国内的 PAAS 基本上死光的情况下,对 BAE 没什么信心!
    • SAE,JAE 已死,有事烧纸.
    • 网易蜂巢 出得晚,动作慢,不支持备案,官方微信群都是讨论免流的(利用网易云音乐的套餐包). 是 1 元 /天,个人感觉不是很靠谱.

    遇到 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 "[email protected]"
    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 为什么不能写一行替换替换为国内源的代码.
    在我看来那个什么镜像加速都没有改一下源来得实用.
    如果你代码构建做得好,像我这样新手一次就就可以代码构建成功!
    这样的失败体验很有可能把我们挡在门外

    done

    项目地址在 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 的数据库是完全足够了. 暂时就入这个坑吧!

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

    https://github.com/flyhigher139/OctBlog
    wph95
        20
    wph95  
       2016-04-26 12:53:12 +08:00
    @zongwan 本来容器就不该配合 ssh , 不然那就成 vps 了
    我 django 密码 通过环境变量的方式传入进去的
    pimin
        21
    pimin  
    OP
       2016-04-26 13:15:53 +08:00 via Android
    @Tink
    确实是,现在我回头看它主要是:
    容器创建,管理,运行,扩容,辅助资源
    我看看他们起的名字真是乳头都看晕了
    pimin
        22
    pimin  
    OP
       2016-04-26 13:18:48 +08:00 via Android
    @zongwan
    这个是按时间的
    用多久取消就按比例扣钱
    我拿代金券开的,用几下感觉不划算我就关了
    发现扣了 2 块多
    zongwan
        23
    zongwan  
       2016-04-26 13:23:01 +08:00
    @wph95 我不敢放在环境变量里
    账号丢了 会被看到明文
    一般钥匙文件才会放进去
    ssh 进去只能改密码,不会看到密码明文
    xujialiang
        24
    xujialiang  
       2016-04-26 13:23:49 +08:00 via iPhone
    用微容器,可以减少很多部署时间
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1114 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.