你能用一个实际的例子/案例来解释Docker吗?

时间:2013-12-16 19:07:53

标签: docker vagrant virtualization docker-container

我已阅读thisintro docs on Docker.io,我喜欢它所呈现的概念。但是,你能帮我理解一下吗?你能给我一些关于如何使用Docker的实际例子和/或案例研究,以及何时实际使用它?

只是旁注,我最近开始使用Vagrant将预配置的DEV盒分发给我们的开发团队(因此我们都使用相同的基本系统)。我甚至看到过Docker在Vagrant中使用的例子以及诸如此类但我没有得到实际意义上的这样做的好处;这意味着我理解虚拟机和容器之间的区别以及后者提供的逻辑分离,但是什么时候应该使用一个而不是另一个当Docker 里面 Vagrant? (这是一个更具体的问题,但我最感兴趣的是上面第一个问题中概述的更大的图片。)

3 个答案:

答案 0 :(得分:22)

我参与努力使科学分析软件更容易为研究界所用。通常,所讨论的软件是由一个人或少数人编写的,没有足够的重复规划,例如一个人在他们自己的计算机上编写Python脚本或Matlab模块。如果软件运行良好,其他人通常会自己尝试...但在某些情况下成功复制一个没有文档或难以重新实现的环境可能是一个真正的挑战。

Docker是一个很好的工具,可以帮助其他人重复使用这样的软件,因为编写Vagrant脚本以在环境中安装软件是一个更低的入门门槛。如果我给一个人一个Docker容器,她可以在其中做任何她想做的事情(编写代码,安装库,设置环境等等。当它“完成”时,她可以保存它的图像并将图像发布到Docker存储库并告诉另一位研究人员,“在这里,只需启动它并运行它......”

我们还在考虑使用容器作为我们自己的配置管理策略来交付和存档生产软件......至少是服务器端组件。

我们还在Python和shell中编写脚本以完成多个Docker容器的数据处理工作流程。我们炮制的一个演示是在图像上运行OpenCV以提取人物的面部,然后使用ImageMagick裁剪出面部,最后再使用ImageMagick制作所有面部的拼贴画。我们为OpenCV构建了一个容器,为ImageMagick构建了一个容器,然后编写了一个Python脚本,在每个容器上用必要的参数执行“docker run ...”。 Python脚本是使用docker-py项目完成的,该项目非常适合我们需要的项目。

答案 1 :(得分:9)

在案例研究中查看“how and why Spotify uses Docker”。

回答你的上一个问题:

  

我甚至看到过Docker在Vagrant和   但是我没有得到这样做的好处   实践意义;这意味着我理解虚拟机之间的区别   和容器以及后者提供的逻辑分离,但何时   我应该使用一个而不是另一个当Docker里面   流浪?

Docker经常在Vagrant中使用,因为它不能在Mac OSX上运行(参见Kernel Requirements),这是开发人员非常常用的。

然后让您的开发团队在相同的容器上工作,在笔记本电脑上构建和测试产品,然后“大规模运行,生产中,虚拟机,裸机,OpenStack集群,公共云等”,需要Vagrant on their Mac OSX

那就是说,在这里你可以看到另一个很棒的案例研究http://bit.ly/19h8gUk

答案 2 :(得分:2)

有一个漂亮的docker hack day用例:

使用Git和Jenkins自动部署Java堆栈。您将代码推送到contenairezied git存储库中。它将触发Jenkins构建,以便将您的webapp打包到Container Docker中,并由Docker运行。

https://www.youtube.com/watch?v=Q1l-WoJ7I7M