我读过关于 Docker、boot2docker 和 Vagrant 的 Docker 提供程序的文章,我想我已经非常清楚所有这些是如何工作的。然而,还有一件事我还没有弄清楚。
Docker 主机虚拟机(如 boot2docker 中的 TCL)提供了一个“代理”虚拟机环境,允许我们在非 Linux 主机上使用 Docker。现在,假设我想重现某个生产环境,我实际使用哪个 Docker 主机虚拟机真的很重要吗?为什么需要选择不同的主机虚拟机?
这里的理由是,我可以简单地从FROM
所需的框中派生出像 httpd 和 mysql 这样的服务,即如果我使用 boot2docker 并且我的生产环境运行 Ubuntu 14.04,我就可以简单地“扩展”我的 Ubuntu 映像Dockerfile
并完成它。
我的想法是否正确,只有在重现也使用 Docker 技术的生产环境时才需要切换 Docker 主机 VM?我的具体用例涉及在自己的开发环境中仅将 Docker(以及 Vagrant)用于隔离目的。这可能是我几乎错过了自定义主机 VM 的要点的原因。
据我所知,将 Vagrant 与 Docker 结合使用只是创建持久且可移植的开发环境的另一个抽象层次。但是,考虑到即使在 Linux 主机上也可以强制 Vagrant 使用特定的主机 VM,我猜是使用自定义主机有一定意义,但我还没有意识到。
答案1
这是平衡问题。主机占用空间越简单、越小,就越安全,而且可能更高效、更节省资源。
为了管理主机或主机集群,您需要工具,因此您需要添加这些工具(假设在容器之前和/或容器外部需要这些工具),这会使主机操作系统膨胀。
简而言之,人们对于主机操作系统应该提供什么有不同的看法,这些看法应该指导您选择主机操作系统。
一篇包含有关此事的示例观点的文章:https://blog.docker.com/2015/02/the-new-minimalist-operating-systems/