是否可以在 Trusty 上运行 LXC 或 Docker 容器化的 10.04 或 12.04 或更早版本的 LTS?

是否可以在 Trusty 上运行 LXC 或 Docker 容器化的 10.04 或 12.04 或更早版本的 LTS?

是否可以进行 Ubuntu 14.04 (Trusty) 的普通安装,并在其中运行最初附带旧内核的旧版 Ubuntu 容器化版本?

例如,对于 12.04,我假设答案是肯定的,因为它具有linux-image后续 Ubuntu 版本的软件包,例如linux-image-generic-lts-saucylinux-image-generic-lts-quantal。但对于 10.04 来说情况并非如此,所以我不确定。但是是否有可用的文档可供我用来推断什么可以运行?

我之所以问这个问题是因为内核接口时不时地会进行更新。然而,有时运行较新版本的发行版并同时保留基于前身版本的构建环境是有益的。

答案1

您可以在较新的内核上运行较旧的 Linux 程序。 Linux 保持向后兼容性(至少对于所有记录的接口),这是为了那些出于某种原因运行旧二进制文件的人的利益(因为他们不想费心重新编译,因为他们已经丢失了源代码,因为这是他们没有源代码的商业软件等)。

如果您想要一个包含较旧开发工具的构建环境,甚至是一个不深入内核接口的测试环境,那么您不需要运行较旧的内核,只需运行较旧的用户态环境即可。为此,您不需要任何复杂的东西:chroot会做。如果您希望较旧的(或较新的)发行版拥有自己的网络配置,那么像 LXC、Docker 等更高级的东西可能会很有用。如果您不希望这样,您可以使用 Debian 在已知环境中精确构建软件的方式(例如,在具有测试安装的计算机上构建 Debian 稳定版软件):施鲁特。看如何在 64 位 Debian/Ubuntu 上运行 32 位程序?有关在 chroot 中设置 Debian 或衍生版本的替代安装的指南。

如果您想运行旧发行版的内核,则需要一个实际的虚拟机,例如 KVM 或 VirtualBox。使用 LXC 等的 Linux-on-Linux 虚拟化始终运行相同的内核。

答案2

➜ codetv_static# docker run ubuntu:10.04 /bin/echo 'Howdy!' Unable to find image 'ubuntu:10.04' locally 10.04: Pulling from library/ubuntu a3ed95caeb02: Pull complete 86b54f4b6a4e: Pull complete Digest: sha256:f6695b2d24dd2e1da0a79fa72459e33505da79939c13ce50e90675c32988ab64 Status: Downloaded newer image for ubuntu:10.04 Howdy!

相关内容