单个 Ubuntu 主机上有 KVM 和 Docker?

单个 Ubuntu 主机上有 KVM 和 Docker?

我有一个家庭实验室服务器,目前用于运行一些虚拟机。我想开始迁移到一些容器用途,但仍然需要虚拟机。所以我的问题是,我是否可以将 Ubuntu 作为主机操作系统运行,然后安装和运行 KVM 以满足我的虚拟机需求,并安装和运行 Docker 以满足我的容器需求。
在我开始迁移之前,我想知道它们是否可以在单个 Ubuntu 服务器上很好地共存。

感谢您的想法!

答案1

是的,KVM 客户机(例如,使用 KVM 在 QEMU 中运行的 Windows 或 OSX)和 Docker(例如,运行容器的 Docker CE)可以在同一个 Ubuntu 实例上同时正常运行。

您的问题基本上描述了我的工作量。目前,我正在运行两个 Android 模拟器(使用硬件虚拟化加速,即 Linux 上的 KVM)、一个 Windows 10 QEMU 客户机、一个 OS X High Sierra QEMU 客户机和 Docker(通过这些说明安装https://docs.docker.com/install/linux/docker-ce/ubuntu/) 及其 hello world示例同时在Ubuntu 18.04主机上运行。

其工作原理的简洁解释是,Linux 上的虚拟机(QEMU 等)使用虚拟机管理程序(QEMU 的情况下为 KVM,但 Virtualbox 和 VMWare 使用不同的虚拟机管理程序)来使用计算机的硬件资源,而 Docker 使用 Linux 命名空间来简单地使用当前正在运行的内核的可用硬件资源,但与主操作系统隔离。

这样,KVM 客户端和 Docker 实际上使用不同的技术运行,甚至在内核级别上彼此不相关。这与您尝试同时使用不同的虚拟机管理程序(例如 QEMU+KVM 和 VirtualBox)的情况相反 - 那是行不通的,因为您一次只能运行一种类型的虚拟机管理程序(尽管您可以从每种类型的虚拟机管理程序运行多个 VM)。

这里对技术细节有很好的解释:https://stackoverflow.com/questions/16047306/how-is-docker-different-from-a-virtual-machine

答案2

答案有点不完整。

即使 QEMU 和 Docker 使用系统的不同方面,它们在资源层面上也是一致的,例如存储和网络。网络尤其有趣。根据您在这方面的使用模式,可能会出现一些问题。

不应复合的内容包括高级网络过滤和混叠,例如非平凡的防火墙,和/或浮动IP,vlan等等。

结果不可靠。一段时间内,你可能一切顺利,但某个更新可能会带来彻底的改变。关于如何过滤防火墙规则的新想法、新的网络工具链等等。

使用 检查您的网络ip a。在我的 KVM 主机上,我看到vibrXXX网桥,在 docker VM 上,我看到网桥。如果我同时安装两者,它们通常会与我的网桥和其他东西dockerYYY混淆。floatZZZ

提示!
做好备份,并准备好清除和重新配置或重新安装。我使用“所需状态配置”来安装我的机器。这样我就可以随时从完整配置在评论出犯罪嫌疑人后,只需几分钟。

通过 KVM 主机和带有 Docker 的 VM,我将它们分开多年,避免了同事在此过程中遇到的问题。

答案3

我没有发现任何表明存在任何危险信号或警示您无法实现目标的信息。

我对此进行了一些研究,发现 KVM 的内核组件自 2.6.20 内核开始内置于主流 Linux 中,18.04 LTS 附带 4.15 内核。KVM 很好地集成到了 Ubuntu 18.04 LTS 中。

根据 Docker for Ubuntu,Docker 针对基本服务器和虚拟机进行了优化。

您可以阅读更多关于虚拟机Docker分别。

相关内容