V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
xmgit
V2EX  ›  Docker

Docker 与 Vagrant 的区别?

  •  
  •   xmgit · Jul 31, 2016 · 10333 views
    This topic created in 3557 days ago, the information mentioned may be changed or developed.
    刚开始听说 Docker 的时候,那个兴奋啊
    一个容器引擎,与宿主机共享操作系统内核......
    然而,现在使用中,还是直接拉一个系统镜像来开始工作......

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



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

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

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

    完全是两样东西
    shimanooo
        24
    shimanooo  
       Aug 1, 2016
    @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  
       Aug 1, 2016
    Q1 :容器会取代虚机吗?

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

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


    http://blog.daocloud.io/firstlive/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1019 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 19:05 · PVG 03:05 · LAX 12:05 · JFK 15:05
    ♥ Do have faith in what you're doing.