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

Docker 与 Vagrant 的区别?

  •  
  •   Bardon · 2016-07-31 09:15:43 +08:00 · 9659 次点击
    这是一个创建于 3038 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚开始听说 Docker 的时候,那个兴奋啊
    一个容器引擎,与宿主机共享操作系统内核......
    然而,现在使用中,还是直接拉一个系统镜像来开始工作......

    或许,他们最大的区别还是在于生态?求解。
    25 条回复    2016-08-01 20:28:00 +08:00
    crysislinux
        1
    crysislinux  
       2016-07-31 09:20:27 +08:00
    看你拿来干什么了。如果只是需要一个 image 来搭个用到 linux 的开发环境,那确实区别不大。。
    RoshanWu
        2
    RoshanWu  
       2016-07-31 09:27:46 +08:00   ❤️ 2
    前几天刚给公司做了个 Docker 推广,截两个图吧:



    Docker 的使用场景官方给出了几个:
    1 、 CI/CD
    2 、高效的开发测试运维
    3 、大数据分析(应该是什么集群之类的应用吧)
    4 、减少基础开销(一台机器上可跑上千个容器)
    Bardon
        3
    Bardon  
    OP
       2016-07-31 09:43:36 +08:00
    @RoshanWu 感觉 Vagrant 使用 alpine ,并善用快照的话,恢复也是秒级的,体积也能做到 MB ,与 docker 相比,就是一个初始镜像问题,也就是 FROM xxx
    另外至于性能, docker for mac && windows ,老实说,性能不如人意,可能我有些吹毛求疵了。
    aprikyblue
        4
    aprikyblue  
       2016-07-31 10:33:39 +08:00 via Android
    @Bardon mac 我没试过。。 windows 的 docker daemon 是运行在 linux vm 里的,性能好才有鬼了。。。
    br00k
        5
    br00k  
       2016-07-31 10:47:19 +08:00
    @Bardon 感觉很方便啊,各种镜像。以前安装一个复杂点的软件,配置麻烦死了。编译,安装依赖,配置一堆才能跑起来,现在输入一个命令等一下就可用了。
    21grams
        6
    21grams  
       2016-07-31 10:50:10 +08:00
    没用过 docker ,看了二楼的图有点疑问,既然 docker 这么好,为啥没把虚拟机淘汰掉?
    mrytsr
        7
    mrytsr  
       2016-07-31 10:56:48 +08:00 via Android
    选查下 lxc
    Bardon
        8
    Bardon  
    OP
       2016-07-31 11:07:15 +08:00
    @br00k 嗯,所以浑浑噩噩用到现在,感觉与 Vagrant 的区别就是一个生态,然后各种概念轰炸。
    andysheng
        9
    andysheng  
       2016-07-31 11:50:47 +08:00 via iPhone
    @aprikyblue mac 的 docker 也是跑在 vm 里
    majinjing3
        10
    majinjing3  
       2016-07-31 11:55:13 +08:00 via Android
    @Bardon 不是概念哦, docker 已经可以 production ready 了, docker 是容器管理工具,而 vagrant 是虚拟机管理工具,生产环境中,不需要 vagrant ,因为云服务提供商都有自己的 api ,而且各大提供商基础环境千差万别,而 docker 现在可以运行在大多数发行版上,和具体的云环境隔离开,无论是本地测试,生产环境测试都完保证需要的一致性
    tobyxdd
        11
    tobyxdd  
       2016-07-31 12:12:23 +08:00
    @21grams Docker 是 Container 说白了就是个高级版沙盘 另类 chroot 和 VM 的原理不同功能也比 VM 有限 比如 Linux 上永远没法跑 Docker 的 Windows 反之亦然
    defunct9
        12
    defunct9  
       2016-07-31 12:13:40 +08:00 via iPhone
    vagrant 是完全虚拟的操作系统。 docker 是进程级别的,维护进程不方便,准确说应该连 shell 都不起的
    tobyxdd
        13
    tobyxdd  
       2016-07-31 12:13:49 +08:00
    @21grams docker 依赖 host 的内核 依赖 host 的 system calls 根本不属于 virtualization
    happypy1
        14
    happypy1  
       2016-07-31 14:52:16 +08:00
    vagrant 不本质上应该是虚拟机自动部署化技术吗?它不是一个独立的虚拟机技术方案,它只是提供了一个脚本技术来创建一个虚拟机。你看它还是需要 VB , vmware 来运行虚拟机的。
    kaneg
        15
    kaneg  
       2016-07-31 15:42:57 +08:00 via iPhone
    这两个差异海了去了。前者解决的是 devops 的问题,后者解决的则是开发人员的问题
    bingwenshi
        16
    bingwenshi  
       2016-07-31 16:50:52 +08:00
    vagrant 的底层是 virtual box , 全虚拟化
    bingwenshi
        17
    bingwenshi  
       2016-07-31 16:51:47 +08:00
    docker 顶多算是个隔离的进程,跟 os 相关的都是 hook 到物理机上的
    Syc
        18
    Syc  
       2016-07-31 16:58:14 +08:00 via Android
    docker 个人理解为 os 型沙盒,不同于软件型沙盒的是 docker 能实现更多
    oska874
        19
    oska874  
       2016-07-31 19:02:56 +08:00   ❤️ 1
    两个有关系吗?一个虚拟机,一个容器。

    @aprikyblue 新版的 docker 在 mac 和 win 上已经原生了不用 vbox 了。
    nsgit
        20
    nsgit  
       2016-07-31 19:53:45 +08:00
    Docker 类容器技术应用很广了, Vagrant 只是测试的时候用的比较多吧?没见过生产使用的。
    loading
        21
    loading  
       2016-07-31 21:35:59 +08:00 via Android
    如果 docker 在 windows 上性能问题能从根本上提升, ms 也就能第二春了。
    Bardon
        22
    Bardon  
    OP
       2016-07-31 23:06:38 +08:00
    @oska874 说起这个原声,噪点就来了
    docker 目前在 mac & win 上的真的是原生了么?
    monnand
        23
    monnand  
       2016-08-01 00:02:28 +08:00 via Android
    Docker 是容器,底层实现是利用下层操作系统提供的功能。 Linux 上是用的 cgroup + namespace 。

    Vagrant 主要是用来部署测试环境的,下层多用虚拟机。

    完全是两样东西
    shimanooo
        24
    shimanooo  
       2016-08-01 00:56:57 +08:00
    @Bardon
    新版 docker 使用了 OSX/Win 原生的虚拟机组件,不用 vbox 作为虚拟机,内部还是要起个 linux 的。

    ~ $ sudo docker run -it --rm base/archlinux /bin/uname -a
    Linux 30efc1f9e0e2 4.4.15-moby #1 SMP Thu Jul 28 22:03:07 UTC 2016 x86_64 GNU/Linux
    pacoxu
        25
    pacoxu  
       2016-08-01 20:28:00 +08:00
    Q1 :容器会取代虚机吗?

    A1 :其实我们认为在可以预见的中短期内, Docker 与虚拟机应该是共存的状态。虚拟机是资源的载体,而应用是在资源之上,这中间的生态层面其实是不一样的。通过观察现在已有的 IT 架构和公有云平台也可以发现,几乎没有大规模的公有云放弃虚拟化而使用容器做资源分配。

    虚拟化出来的资源相当于裸机,而使用容器可以获得大规模调动的能力,这两者其实形成了共存、互补的生态体系。 Docker 技术的出现其实就是更好的解决传统解决方案的不足之处。


    http://blog.daocloud.io/firstlive/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1741 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 16:31 · PVG 00:31 · LAX 08:31 · JFK 11:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.