为什么在 Vagrant 下 运行 Docker?

Why run Docker under Vagrant?

我已经阅读了多篇关于如何执行此操作的文章,但我无法弄清楚在 macOS 下有什么好处。

在我看来,您可以 运行 Docker 在 macOS 上使用 Docker 社区版 (boot2docker+Kitematic) 本机。 运行宁从 Vagrant、机动性方面给了我什么?

我的标准日常开发工作是在 Docker For Mac/Windows 中进行的,因为它们涵盖了我需要使用 Docker 完成的工作的大约 95%。自从他们替换了 Docker Toolbox/boot2docker 并无缝集成到 OS 后,我发现很少有理由转移到另一个虚拟机。我现在看到 using Vagrant 或独立 VM 的两个主要原因是 VM 自定义和集群。

VM 自定义

Docker 工具箱提供的虚拟机,Docker 为 Mac/Windows 预打包削减了 Linux 发行版 (TinyCore and Alpine),这些发行版在很大程度上是短暂的,除了 Docker 配置,因此您对它们的工作方式没有太多发言权。

网络

我处理了一些自定义网络配置,这些配置在预打包的 VM 中是不可能的,主要是将容器连接到可路由网络而不是使用映射端口。

版本控制

有时您需要复制 运行 旧版本 Docker 守护进程的服务器环境,或使用 devicemapper 的 RHEL 服务器。 VM 让您选择要安装的包。

聚类

构建集群或分支到 Mesosphere/Kubernetes 将需要多个虚拟机。我倾向于发现使用 Vagrant 而不是 Docker Machine 更容易管理和构建它们,而且它们需要在 VM 中进行自定义配置。