如何解决如何理解LXD与VM和Docker的区别?
当我使用 Travis-CI 时,我需要在 LXD 和完整 VM 之间进行选择:https://docs.travis-ci.com/user/reference/overview/。虽然链接页面在具体用法上描述了它们的特性,但我想问一下 LXD 在概念上与所谓的完整 VM 有何不同,以及它们与 Docker 相比如何?我认为 CI 测试应该在预装了 Linux 或其他操作系统的服务器上运行,并且我们不需要在服务器端运行 LXD 或 VM。所以我对在服务器上运行的 LXD 或 VM 的基本概念感到很困惑。有什么说明吗?
解决方法
使用 VM,您可以设置完整的 Linux 发行版,并且它运行新的 Linux 内核和发行版的运行时。您需要在 CPU 中为 VM 提供硬件支持,需要大量内存,并且启动需要一些时间。
通过 LXD,您可以设置虚拟机和系统容器。
系统容器的行为类似于 VM,但不使用硬件虚拟化。它使用 Linux 内核功能与主机的其余部分隔离,即 cgroups 和 namespaces。
此外,系统容器不会启动单独的 Linux 内核;它重用了主机的 Linux 内核。由于 Linux 内核稳定 API,您的主机可以运行 Ubuntu,您可以同时拥有运行 Ubuntu、Fedora、Alpine、Oracle Linux 等的系统容器。
相比之下,系统容器与虚拟机相比只占用很少的资源。作为系统容器的典型 Linux 发行版可能从大约 200MB RAM 开始。
系统容器(和 LXD 虚拟机)使用存储池,包括 ZFS、btrfs、LVM 或其他一些。通过这样做,他们支持copy-on-write,这意味着容器的创建几乎是瞬时的。因为存储池中已经有一个容器镜像,任何新的容器都基于该容器镜像。在快速服务器上,它可能不到一秒。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。