Docker是否减less或减轻了木偶/厨师等的需求?

我没有任何这些技术(真的很尴尬),但在我目前的演出中,公司非常需要自动化。

因此,当我开始阅读Puppet和Chef和PowerShell DSC时,我记得Docker和Containerisation正在进入Windows。

Docker是否放弃了这些工具的需求,还是一起工作?

我知道Docker在操作系统中使用了虚拟化技术,所以我感觉Docker解决了一个不同的问题,并且仍然需要一个configuration工具,但是我没有一定的实践知识。

Docker是否放弃了这些工具的需求,还是一起工作?

他们一起工作:供应和集装箱化解决了不同的问题,实际上您可以使用configuration工具自行configurationdocker集装箱。
请参阅“ Docker:使用Puppet ”

像Chef&Puppet这样的工具对于configuration很重要,但是他们确实有一个缺点,那就是Docker有助于支撑。 他们并不总是完全幂等(炒作尽pipe)。 换句话说,在同一台虚拟机上运行Chef两次可能会导致在该机器上发生意外和难以find的变化,并且您将恢复备份以达到已知的良好状态。

相比之下,Docker部署涉及到构build一个全新的映像,并将其与旧映像进行交换。 回滚涉及简单地不加擦除它们,并比较它们以诊断新图像中的问题。

请注意,您仍然可以使用Chef来构buildDocker容器。 但是你可能不会。 由于容器应该以特定的方式运行一个进程,我发现一系列简单的shell命令比Chef所需要的开销更好。

总之不,你不需要像厨师或木偶这样的东西。 当然你可以使用,如果喜欢,但不是必需的。

如果你用一种集装箱化的方式构build你的系统,那么你所需要的只是像CoreOS或Atomic这样的小型操作系统。

所以,如果需要,您可以通过Cloud-Configconfiguration您的虚拟机,并使用云configuration或Docker cli本身来部署您的容器。 这个想法是你的机器应该有一个静态的,他们可以创build任何时候你想要一个新的,当你不需要的时候销毁。

还有其他工具可以帮助Docker编排,这是另一个故事本身。

SwarmKubernetesKubernetes这样的工具。 docker机对于开发目的也很有帮助。 (也许也是部署)。

这里是CoreOS的例子: https ://coreos.com/os/docs/latest/cloud-config.html

资源:我在生产不同的应用程序。

更新:

顺便说一下,Docker不仅是一个可视化技术。 它做了一些容器化(你也可以称之为虚拟化),这只是Docker可以做的一小部分。 Docker可以configuration,构build,发布和运行应用程序,消除对主机的依赖。 这就是为什么你不需要这些经典的configuration工具。

Docker是三件事:一个很酷的方式来运行一个过程,一个体面的基于图像的部署系统,和一个平庸的系统图像build设者。

第一个与configurationpipe理无关,因为这些工具并不涉及运行进程,至less不是直接的。 第二个是在生成映像的时候提前完成一些configurationpipe理。 对于像服务发现和秘密这样的东西,仍然经常需要最后一公里的configuration,但是这可以通过诸如consul-templates或confd之类的较轻工具来处理。 最后是摩擦的地方。 docker build简单,容易入门,而且对复杂的情况大多无益。 您最多可以在dockerfiles之间创build一个单一的inheritance树,这使得多轴matrix构build({app1 app2 app3} x {prod qa dev})更难。 也为其他群体构build可组合的抽象是困难的,尽pipe这也不是不可能的。 使用类似Packer的东西来驱动镜像构build可以产生更简单的代码,并且支持全套的CAPS(Chef,Ansible,Puppet,Salt)工具。 这主要是针对你正在处理像微型虚拟机这样的Docker镜像的用例,我希望更less的人可以这样做,但这是我们现在的事情。

Puppet和Chef是configurationpipe理工具,Docker是一个虚拟化工具,比如LXC。

通常你会使用厨师或木偶来pipe理Docker容器。 例如,看看厨师文档 。

编辑按@ptierno评论。