我对这些技术并不骄傲(真的令人尴尬),但在我目前的演出中,该公司急需自动化。
因此,当我开始阅读Puppet和Chef以及PowerShell DSC时,我记得Docker和容器化正在进入Windows。
Docker是否不再使用这些工具,还是一起工作?
我知道Docker在操作系统中使用虚拟化技术,所以我觉得Docker解决了一个不同的问题,但仍然需要一个配置工具,但我没有确定的实用知识。
答案 0 :(得分:4)
Docker是否不再使用这些工具,还是一起工作?
他们协同工作:配置和容器化解决了不同的问题,您实际上可以使用配置工具自行配置docker容器。
例如,参见" Docker: Using Puppet"
答案 1 :(得分:1)
像Chef&amp ;;等工具Puppet对于配置非常重要,但它们确实存在Docker帮助支撑的一个弱点。它们并不总是完全幂等(尽管炒作)。换句话说,在同一个虚拟机上运行Chef两次可能会在该计算机上导致意外且难以找到的更改,并且您将恢复备份以达到已知良好状态。
相比之下,Docker部署涉及构建一个全新的图像并将其与旧图像交换出来。回滚涉及简单地取消它们并将它们进行比较以诊断新图像中的问题。
请注意,您仍然可以使用Chef来构建Docker容器。但你很可能不会。由于容器应该以特定的方式只运行一个进程,我发现一系列简单的shell命令比Chef所需的开销要好。
答案 2 :(得分:0)
Puppet和Chef是配置管理工具,Docker是一个虚拟化工具,如LXC。
通常你会使用Chef或puppet来管理Docker容器。例如,请查看Chef docs。
根据@ptierno评论编辑。
答案 3 :(得分:0)
总之,不,你不需要像Chef或Puppet这样的东西。当然,你可以使用,但不是必需的。
如果你以一种容器化的方式构建你的系统,那么你所需要的只是像CoreOS或Atomic这样的小型操作系统。
因此,您只需根据需要通过Cloud-Config
配置您的VM,并使用云配置或Docker cli本身部署您的容器。我们的想法是你的机器应该具有静态状态,只要你想要新机器就可以创建它们,并在你不需要的时候销毁它们。
还有其他工具可以帮助Docker编排本身另一个故事。
Swarm
,Kubernetes
和Mesosphere
等工具。
docker-machine对开发目的也很有帮助。 (也许是部署)。
这是CoreOS示例: https://coreos.com/os/docs/latest/cloud-config.html
资源:我是为不同的应用程序制作的。
<强>更新强>
BTW,Docker不仅是一种可视化技术。它实现了某种容器化(你也称之为虚拟化),这只是Docker可以做的一小部分。 Docker可以配置,构建,发布和运行应用程序,从而消除其对主机的依赖性。这就是为什么你不需要那些经典的配置工具。答案 4 :(得分:-1)
Docker有三件事:一种运行流程的酷炫方式,一个体面的基于图像的部署系统,以及一个平庸的系统映像构建器。
第一个与配置管理无关,因为这些工具不参与运行流程,至少不是直接参与。第二种方法是在生成映像时提前完成一些配置管理。对于诸如服务发现和秘密之类的东西,仍然经常需要最后一英里的配置,但这可以通过诸如consul-templates或confd之类的更轻的工具来处理。最后是磨擦的地方。 docker build
很简单,很容易上手,而且对复杂的情况几乎没有帮助。你最多可以得到一个dockerfiles之间的单一继承树,这使得像多轴矩阵构建({app1 app2 app3} x {prod qa dev})这样的东西比它更难。同时为其他组构建可组合抽象也很困难,尽管这并非不可能。使用Packer之类的东西来驱动图像构建有时可以生成更简单的代码,并支持全套CAPS(Chef,Ansible,Puppet,Salt)工具。这主要针对的是你正在处理Docker图像的用例,比如微小的虚拟机,我希望人们可以做的更少,但这就是我们所做的事情。