是否可以在 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!

相關內容