我已阅读 this和 intro docs on Docker.io我喜欢它所呈现的概念。但是,你能帮助我更好地理解它吗?你能给我一些关于如何使用 Docker 以及何时真正使用它的实际示例和/或案例研究吗?
顺便说一句,我最近开始使用 Vagrant 向我们的开发团队分发一个预配置的 DEV 盒子(所以我们都使用相同的基本系统)。我什至看到了在 Vagrant 中使用 Docker 的例子,但我不知道这样做有什么实际意义;这意味着我了解 VM 和容器之间的区别以及后者提供的逻辑分离,但是我什么时候应该使用一个而不是另一个,什么时候应该使用 Docker inside Vagrant? (这是一个更具体的问题,但我最感兴趣的是上面第一个问题中概述的大局)。
最佳答案
我致力于让研究界更容易使用进行科学分析的软件。通常,有问题的软件是由一个人或几个人编写的,没有足够的重用计划,例如一个人在自己的计算机上编写 Python 脚本或 Matlab 模块。如果软件运行良好,其他人通常会想自己尝试一下……但在某些情况下,要成功复制未记录或难以重新实现的环境可能是一个真正的挑战。
Docker 是一个很好的工具,可以帮助其他人重用此类软件,因为与编写 Vagrant 脚本在环境中安装软件相比,它的进入阈值更低。如果我给一个人一个 Docker 容器,她可以在里面做任何她想做的事情(编写代码、安装库、设置环境等。当它“完成”时,她可以保存它的图像并将图像发布到Docker 存储库并告诉另一位研究人员,“在这里,只需启动它并运行它......”
我们也在考虑使用容器作为我们自己的配置管理策略来交付和归档生产软件……至少是服务器端组件。
我们还使用 Python 和 shell 编写脚本来运行多个 Docker 容器的数据处理工作流。我们编写的一个演示是在图像上运行 OpenCV 以提取人脸,然后 ImageMagick 裁剪人脸,最后再次使用 ImageMagick 制作所有人脸的拼贴画。我们为 OpenCV 构建了一个容器,为 ImageMagick 构建了一个容器,然后编写了一个 Python 脚本以在每个容器上执行“docker run ...”并使用必要的参数。 Python 脚本是使用 docker-py 完成的。项目非常适合我们的需求。
关于docker - 你能用一个实际的例子/案例来解释 Docker 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20618828/