25

我已经阅读了这篇文章和Docker.io 上的介绍文档,我喜欢它所呈现的概念。但是,你能帮助我更好地理解它吗?你能给我一些关于如何使用 Docker 以及何时真正使用它的实际示例和/或案例研究吗?

顺便说一句,我最近开始使用 Vagrant 向我们的开发团队分发一个预配置的 DEV 盒子(所以我们都使用相同的基本系统)。我什至看到了在 Vagrant 中使用 Docker 的例子,但我不知道这样做有什么实际意义;这意味着我了解 VM 和容器之间的区别以及后者提供的逻辑分离,但是我什么时候应该使用一个而不是另一个,以及什么时候Vagrant 中使用 Docker?(这是一个更具体的问题,但我最感兴趣的是上面第一个问题中概述的大局)。

4

3 回答 3

22

我参与了一项努力,使研究界更容易使用进行科学分析的软件。通常,有问题的软件是由一个人或几个人编写的,而没有足够的重用计划,例如一个人在自己的计算机上编写 Python 脚本或 Matlab 模块。如果软件运行良好,其他人通常想自己尝试一下……但在某些情况下,要成功复制未记录或难以重新实现的环境可能是一个真正的挑战。

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

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

我们还使用 Python 和 shell 编写脚本来运行多个 Docker 容器的数据处理工作流。我们编写的一个演示是在图像上运行 OpenCV 以提取人脸,然后 ImageMagick 裁剪人脸,最后再次使用 ImageMagick 制作所有人脸的拼贴画。我们为 OpenCV 构建了一个容器,为 ImageMagick 构建了一个容器,然后编写了一个 Python 脚本以在每个容器上执行“docker run ...”并使用必要的参数。Python 脚本是使用docker-py项目完成的,该项目可以很好地满足我们的需要。

于 2013-12-19T22:32:52.833 回答
10

查看“ Spotify 如何以及为什么使用 Docker ”作为案例研究。

要回答你的最后一个问题:

我什至看到了在 Vagrant 中使用 Docker 的例子,但我不知道这样做有什么实际意义;这意味着我了解 VM 和容器之间的区别以及后者提供的逻辑分离,但是我什么时候应该使用一个而不是另一个,以及什么时候在 Vagrant 中使用 Docker?

Docker 经常在 Vagrant 中使用,因为它目前不在 Mac OSX 上运行(参见内核要求),开发人员非常常用。

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

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

于 2013-12-20T13:54:13.857 回答
2

有一个不错的 docker hack day 用例:

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

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

于 2013-12-16T19:43:37.767 回答