我有一个家庭实验室服务器,目前用于运行一些虚拟机。我想开始迁移到一些容器用途,但仍然需要虚拟机。所以我的问题是,我是否可以将 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,我将它们分开多年,避免了同事在此过程中遇到的问题。