首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

打算在学校开课讲 Docker,大家有啥建议没有?

  •  1
     
  •   xiqingongzi · 2016-04-29 15:07:56 +08:00 · 5508 次点击
    这是一个创建于 1174 天前的主题,其中的信息可能已经有所发展或是发生改变。

    打算在校内开展 Docker 课程

    我个人是打算讲些 Docker 的优势,然后就是 Docker 容器的基础应用。

    我觉得我主要是引起兴趣,更多还是同学们能够有兴趣自己去研究

    62 回复  |  直到 2016-05-12 08:59:56 +08:00
        1
    eoo   2016-04-29 15:11:48 +08:00 via Android
    支持
        2
    fu82581983   2016-04-29 15:14:29 +08:00   ♥ 1
    你说滋不滋次,我当然是滋次的。

    学校很需要一些比较新的技术,因为老师教的东西实在太老了,学生也会容易没有兴趣。
        3
    Shura   2016-04-29 15:22:18 +08:00 via Android
    然而最多只能是选修课
        4
    xiqingongzi   2016-04-29 15:27:07 +08:00
    @Shura 哈,连选修都算不上,只能算社团的技术分享
        5
    xiqingongzi   2016-04-29 15:27:41 +08:00
    @fu82581983 其实学校的老师都知道,只是不教。坑死。老师们做项目也是 BootStrap 各种用,但是给学生讲的却很少
        6
    fulvaz   2016-04-29 15:30:09 +08:00
    然而我觉得本科能把基础讲明白就已经很了不起了
        7
    xiqingongzi   2016-04-29 15:32:43 +08:00
    @fulvaz 作为社团只讲应用,不讲基础,基础更喜欢同学们自己去深挖。
        8
    cxbig   2016-04-29 15:33:34 +08:00
    想法很好,最好能结合实践。
    10 年前就是吃了这个亏,教材陈旧缺乏实践,出来发现很多知识和社会是脱节的。
        9
    xiqingongzi   2016-04-29 15:35:17 +08:00
    @cxbig 实践的话,会考虑介绍灵雀云之类的业务给他们,让他们尝试自己去操作、部署程序
        10
    cxbig   2016-04-29 15:41:51 +08:00
    @xiqingongzi 大部分实践其实本地 vm 就能做了
        11
    dangyuluo   2016-04-29 15:58:04 +08:00
    你是讲师还是学生
        12
    9hills   2016-04-29 16:01:45 +08:00 via Android   ♥ 1
    你说好不好,那当然是吼啊,但是希望能多讲基础

    Cgroups. Namespace aufs 等等,而不是只教怎么用
        13
    froma2z   2016-04-29 16:04:55 +08:00
    没什么坏处,也没什么卵用
        14
    SourceMan   2016-04-29 16:05:45 +08:00   ♥ 1
    《 LOL 首杀的技巧与实践》
        15
    yuedingwangji   2016-04-29 16:33:37 +08:00
    good
        16
    qfdk   2016-04-29 16:45:56 +08:00   ♥ 6
    来来给 lz 点儿建议,刚做了关于 docker 的东西 :) 顺便把我们的教学教材给你们
    重点不是你来灌输思想而是让他们知道为什么要用 Docker ,自己学来的更有意思并加上自己的实践,你就是当一个学生的角色,这样才能调动积极性,你可以在他们的演讲上提一下问题,看看他们有没有好好的下功夫。如果有条件开一个云平台的话大家可以共享一个文件夹,让学生把做的 ppt 都放上去分享给别的同学,来个🌰 http://tinyurl.com/hzsr2bm

    1. 首先要让学生知道 Docker 是干啥么的,这个不用你来讲,让他们自己学习。

    2. 让他们把学习成果给你们以 ppt+demo 的形式来展示一下,不特别复杂,让他们用 tomcat 跑一个项目,或者 nginx 跑一个自己的项目就好,或者 WordPress 之类的。

    3. 分成 2 人的小组来做一个 微型架构(都在 Docker🐳中) 加上物理机的 nginx 来复杂均衡+monkey 测试。
    我把我们写的教程可以发一下
    http://tinyurl.com/jllhezf (需要翻墙)
    就是做成一个这样的项目 英文资料 http://techblog.netflix.com/2013/03/introducing-first-netflixoss-recipe-rss.html
    这些都要做在 docker 里面
    最后写一个自动化脚本自动部署这些东西

    具体可以参考我写的 https://github.com/qfdk/docker-rss
    喜欢的可以去 https://hub.docker.com/r/qfdk/docker-rss/ 给我打个星 :)
    时间长的话 大概 7 节课,短的话大概 2 节课,看学生水平而定(如果连 git 都不会玩儿的孩子。。)

    最后祝好运
        17
    chinajik   2016-04-29 16:52:12 +08:00   ♥ 1
    推荐 https://www.daocloud.io/
    跟着这个工具走,基本上都能教得好
    Tea.fm 里面有一期节目是马道长的采访,对 docker 的解释我觉得蛮中肯的
        18
    xiqingongzi   2016-04-29 17:07:52 +08:00
    @qfdk 感谢!
    @chinajik 晚上看看
    @dangyuluo 助教
    @9hills 讲基础怕学生没兴趣,我是喜欢讲应用,让他们自发去研究基础
        19
    iburu   2016-04-29 17:11:12 +08:00
    学生的福气
        20
    garipan   2016-04-29 17:17:27 +08:00
    @qfdk 好 铜币已送
        21
    Rorysky   2016-04-29 17:28:51 +08:00
    Docker 和 Vagrant 有何异同?
        22
    ayaseangle   2016-04-29 17:31:27 +08:00 via Android
    只能是选秀或者课外活动。。。本科还是以基础科学为主。
        23
    elya   2016-04-29 18:17:13 +08:00 via iPhone
    你安装一次 Discourse ,啥都体验了
        24
    xiqingongzi   2016-04-29 18:49:49 +08:00
    @ayaseangle 是啊
    @Rorysky Vagrant 如果我没记错是基于 Vbox 的。 Vbox 是系统虚拟化。 Docker 更多是进程虚拟化
    @elya 学生们并不知道 Discourse
        25
    popu111   2016-04-29 19:12:59 +08:00 via Android
    个人感觉这种东西没啥好讲的,还是实♂干的好
        26
    yangxin0   2016-04-29 19:17:15 +08:00 via iPhone   ♥ 1
    还不如多开一门数学课,统计、概率论、数论, docker 这些都是纸老虎如果真要用花一两小时看看文档就可以了。
        27
    wph95   2016-04-29 19:20:12 +08:00
    楼上那位讲的是不错,不过那内容你确定是给普遍的大学学生讲的?
    你跟同学讲微服务架构?
    ---
    作为一个大二狗,我认为应该这样。
    首先表演了快速部署一个博客。 docker pull ghost & docker run ...
    给大家树立 docker 的初印象,快,方便。
    然后引导大家将自己的小项目 docker 化。足够给学生们种下种子了。

    讲 Aufs Cgroups. Namespace ? 那就不是通过上课来教的了 && Aufs 已经属于淘汰边缘
        28
    xcodebuild   2016-04-29 19:21:44 +08:00
    支持,对有用的人会很有用的,我一直很感谢大一的时候学长给我们介绍 Github 。

    (当然对没用的人来说仍然没什么用、、、
        29
    xiqingongzi   2016-04-29 19:25:26 +08:00
    @codefalling 一直觉得版本控制是大学必学的课程。特别是这些开源社区,非常重要。
    @yangxin0 哈,基础的是不少了。虽然是纸老虎,但是我接触到太多的学生甚至不知道这个老虎。
    @wph95 这个是打算做。不过可能会参考 @qfdk 的路线,基础的 Docker 基础让学生自己去查,我在课程上进行简单的说明。然后就是先做实例吸引他们上兴趣。然后就是带他们做小的项目的 Docker 化,逐步引导。我更喜欢让他们自己研究。
    @popu111 实干的前提是让他们知道这东西。三线城市的小学校,关注不到
        30
    qfdk   2016-04-29 19:34:02 +08:00 via iPhone
    @xiqingongzi 不是那个意思 1 2 3 都是给学生做的 你的任务只是在他们碰壁的时候去伸出援手 让同学自己讲课. 我们现在的策略一直这样 学生上台讲课 😛 老师挺轻松 老师就是帮助梳理一下 项目中可能遇到的问题
    @wph95 看第二点 wp 是让同学自己动手演示 老师只是指导 😄
        31
    qfdk   2016-04-29 19:35:56 +08:00 via iPhone
    @xiqingongzi 车上颠簸没看仔细 不好意思哈 误解了
        32
    wph95   2016-04-29 19:37:24 +08:00
    @xiqingongzi 我还是建议 “项目驱动开发”
    到业务复杂到一定程度,他就自然去研究微服务化了。
    docker 的坑在 网络 存储 和 调度。
    反正都碰不到。
        33
    xiqingongzi   2016-04-29 19:37:30 +08:00
    @qfdk 嗯,不过我这边的学生水平一般,前期我还是要多引导。
        34
    xiqingongzi   2016-04-29 19:38:46 +08:00
    @wph95 项目驱动研发是正常的。但是目前来说,不指望他们能直接上手开发,他们目前很多人对开发都是初步开始接触。他们目前很多地方还是不清楚。甚至我们觉得普通的 Linux ,他们目前基础都很差。
        35
    qfdk   2016-04-29 19:45:14 +08:00 via iPhone
    @xiqingongzi 其实最有趣的还是第三点 , 用🐳docker 模拟出来负载均衡的环境, 再写一个 shell 脚本模拟不同的服务器宕机 重启. 这样即学习了主流架构又可以模拟出生产的状况 linux 下的服务器运维 以及对英文的阅读能力 . 搞计算机的这些不会 不大靠谱了. 学生自己讲课还能锻炼语言表达能力 以后跟客户沟通之类的. 我们这边三个任务做完一共 4 节课.
        36
    xiqingongzi   2016-04-29 20:05:46 +08:00
    @qfdk 他们是网络工程专业的。为啥不会我也不明白,毕竟我不是课程设计老师。这些能力确实需要培养
        37
    ryd994   2016-04-29 20:38:29 +08:00
    其实我觉得没有实际经验很难觉出 docker 的好,只会觉得多了好多步骤麻烦。
    只有当测试环境跑的好好的代码部署之后跑不起来的时候,当要迁移服务器,发现要一条条到旧服务器上爬配置的时候, docker 的优势才能体现出来。
    另外,建议不要单讲 docker 本身。学习 compose 能更加强化“ docker 的正确用法”的概念。
        38
    Orzzzz   2016-04-29 20:54:48 +08:00
    用 Daocloud 啊,最 docker 的一家了~

    可以搞一个比赛什么的,用 docker 发布应用,然后分享一下每个人的 dockerfile ,分享一些奇淫技巧什么的。
    最近在研究微容器,一个系统能做到 4.9M ,一个 nginx 服务器只有不到 7M , nginx+php 也才 24M ,简直太赞了,可以给同学们讲讲,肯定都会惊讶的。
    还有可以用 docker 替代虚拟机,或者将虚拟机里的应用迁移到 docker 上,都很有挑战性。
    至于原理的话,亮哥有一本《 Docker 源码分析》,可以给同学们推荐一下。

    支持老师~


    @yangxin0 你还记得你学过的数论概率论图论吗?不赞成你说的花一两个小时看文档就可以搞定.
        39
    ryd994   2016-04-29 22:34:14 +08:00
    @Orzzzz 关于 alpine 还有微容器,感觉其实镜像大小没有那么重要,如果是以常用的 linux 发行版为基础,增量部分是差不多的。
    用 docker history 查看 nginx 和 nginx:alpine 除了基础 OS ,增加的大小,一个是 57.63MB 一个是 56.46MB ,可见几乎没有差别。
    更何况,实际上,以大家的服务器的带宽, 5M 和 50M 和 500M 。下载时间多几秒,并不是大问题。
    而经典发行版的社区支持,是 alpine 等不能比的
    参见 ycombinator 的讨论: https://news.ycombinator.com/item?id=11018102
        40
    7harryprince   2016-04-29 22:54:26 +08:00
    先用 docker 撸一个 wordpress 电子商务网站。
        41
    litpen   2016-04-29 23:09:44 +08:00 via Android
    听说我们学校去年有个学长毕业论文讲 docker ,结果老师都蒙了,不知道怎么问他答辩了
        42
    Reficul   2016-04-29 23:17:35 +08:00 via Android
    @litpen
    研究生还是本科生,咩学校呀?我也准备明年开题上这个方向。
        43
    yangxin0   2016-04-29 23:21:07 +08:00 via iPhone
    @Orzzzz 我以前研究过 cgroup 所以看操作很快的。最近工作接触深度学习、人脸识别所以感觉数学跟不上了。编程这种其实很简单的,有经验的话这个很快,数学以及一些基础课工作了补起太累了。
        44
    litpen   2016-04-29 23:28:36 +08:00   ♥ 1
    @Reficul 其实应该是因为去年那个时候 Docker 还太新,明年应该比较多人有了解了
        45
    Orzzzz   2016-04-29 23:44:12 +08:00
    @yangxin0 膜拜 Orz... 这些东西都好高端,可能是因为我对现在学的数学不感冒吧,还特别容易忘。。
    @ryd994 我是在本地测试用的,所以感觉差别很大,为此还在本机搭了缓存服务器。。。不过我觉得这东西真的很有趣。 另外,谢谢你的链接~
        46
    frozenshadow   2016-04-29 23:48:24 +08:00
    @wph95 卧槽,小哥,你才大二???
        47
    starcraft   2016-04-30 00:40:56 +08:00 via iPhone
    并没必要 就像不少学校已经不拿 java 做参与教学一样。教学基础和实际工作还是不一样的。
        48
    xiqingongzi   2016-04-30 08:16:26 +08:00
    @starcraft 我希望能够带他们入门,让他们知道什么是最新的。他们天天打英雄联盟,什么都不知道。比较着急
    @litpen 可能是老师比较忙,没关注这个。
    @7harryprince 打算撸 WordPress ,电子商务的话,他们目前应该没这个需求。
    @ryd994 这个确实。 Docker 本身也是解决现实环境问题出来的。
    @Orzzzz DaoCloud 的 Dao 工具必讲!
        49
    WildCat   2016-04-30 08:37:12 +08:00 via iPhone
    @xiqingongzi 不要试图劝整天打 LOL 的少年,否则你会失望的。

    另外最好能申请到 docker(for Mac/Windows)的内测,体验不错。


    @wph95 我觉得他们大都没有在 vps 上部署过博客,所以很难知道 docker 的优越性
        50
    xiqingongzi   2016-04-30 08:59:58 +08:00
    @WildCat 不希望他们走出学校一无所成,能引路就引路吧。之前教了他们在 VPS 上部署 WordPress ,过程很艰难。
        51
    wph95   2016-04-30 10:08:43 +08:00
    @frozenshadow -.- 的确是呀
    @ryd994 其实容器大小有时候很重要的,容器大小影响容器启动速度的。
    推荐使用 dao pull 下载镜像哦

    @xiqingongzi http://open.daocloud.io/tag/python-kai-fa-zhe-de-docker-zhi-lv/
    附赠教程,如果需要其他语言的 可以提:)
        52
    ryd994   2016-04-30 10:36:23 +08:00
    @wph95 服务器在国外 G 口接入。瓶颈从来都是硬盘和 cpu ,官方源很快谢谢
    而且我用 docker 都是跑服务,做好镜像反复启动。用 overlayfs 全都是秒开
        53
    wph95   2016-04-30 11:15:54 +08:00
    @ryd994 秒开也是接近 1 秒的 docker 太臃肿了。
    我做的测试 400mb 的启动在 1.0 - 1.8 秒波动
    50mb 的在 700ms - 1s 波动
        54
    ryd994   2016-04-30 11:30:38 +08:00
    @wph95 用不用这样强推啊……
    我是用 docker 跑服务,至少半年没重启过了
    哪怕启动要 1 分钟都无所谓的
    我最近在研究自动发现,有服务自动发现的话,容器轮流重启,不论启动耗时多久,都是 0 downtime
        55
    bestkayle   2016-04-30 11:33:53 +08:00 via iPhone
    哪个学校啊,看看能不能蹭课
        56
    wph95   2016-04-30 11:45:19 +08:00   ♥ 1
    @ryd994 只是说明下在某些场景下 镜像大小还是有点重要的
    当然很多场景下是不 care 的
        57
    xiqingongzi   2016-05-01 11:20:34 +08:00
    @bestkayle 黄冈师范学院~肯定是蹭不了了~
        58
    bjrjk   2016-05-01 20:18:06 +08:00
    @laosb 这种学校的学生会有人听?
        59
    laosb   2016-05-01 20:35:42 +08:00
    @bjrjk 噗,目前我校情况在:
    「有兴趣吗?」
    「有」
    「那就好好学」
    「好」
    ……
    「这个很简单啊,……,你自己有去操作过么」
    「没有,没时间,下周要 xxx 考试、下个月要 xxx 」

    对于沉迷于应试教育不能自拔的人,我没办法。
        60
    guyskk   2016-05-02 00:16:42 +08:00 via Android   ♥ 1
    我也打算在社团做个 docker 分享,不过还没准备好。大概思路是讲明白 docker 能用来干嘛,主要解决什么样的问题,再介绍 /演示用 docker 一键部署几个好玩的东西,比如 minecraft 。具体怎么用不必讲,网上教程那么多自己学去。
        61
    xiqingongzi   2016-05-02 05:59:22 +08:00 via Android
    @bjrjk 前期层开过 Linux 的课程,还有 30 多个人。我觉得还算 ok ,人太多我也搞不定

    @guyskk 感谢。
        62
    wizardforcel   2016-05-12 08:59:56 +08:00 via Android
    不要光讲课,实践也是很重要的。

    考试比例不超过 30%。然后设置三个 project ,每个 20%,每个人都要动手去做,做完了当着全班的面展示,这样就不会不自己做了。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4084 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 02:31 · PVG 10:31 · LAX 19:31 · JFK 22:31
    ♥ Do have faith in what you're doing.