Linux
在為我的 Ubuntu 選擇 Docker 容器鏡像文件時,我需要在它們之間匹配什麼?
當為我的 Ubuntu 選擇一個 Docker 容器鏡像文件,以便它可以在我的 Ubuntu 上執行時,我需要在它們之間匹配什麼?
我是否需要為 Linux 選擇圖像文件而不是為 Unix(MacOS、OpenBSD)選擇圖像文件?
我需要匹配他們的 Linux 發行版(Ubuntu、Centos、…)還是只匹配 Linux 核心?
我需要匹配他們的 Linux 核心版本嗎?
謝謝。
只有作業系統必須匹配。
在 Linux 上執行的 Docker 可以執行任何 Linux 容器,但不能執行任何 Windows 容器或 *BSD 容器(如果有的話)。
在 Windows 上(本機)執行的 Docker 可以執行任何 Windows 容器,但不能執行任何 Linux 容器。
在 Windows 虛擬機管理程序上的 Linux 虛擬機中執行的 Docker 可以執行任何 Linux 容器,但不能執行任何 Windows 容器。
容器只是一個在網路和文件系統“泡沫”中執行的程序。它不依賴於其主機中的任何文件。所以容器鏡像只需要匹配其主機的類型(Linux 上的 Linux 等)。我在 RHEL 上執行基於 Debian 的容器,在 Ubuntu 上執行 Centos 和 Centos 容器。
容器映像的“發行版”僅在以下情況下才相關:
- 您在 Dockerfile (
apt install
,yum install
, 等…)中安裝更多軟體- 您可以進行特定的系統級調整,其中配置文件可以位於不同的位置(例如安全證書)。
- 您添加依賴於特定庫的軟體(例如,基於 Alpine 的容器映像沒有
glibc
,因此正常 Linux 應用程序需要特定的編譯,或者應該添加 glib)- 您在正在執行的容器 (
docker exec...
) 中進行一些手動維護/調試,在這種情況下,使用您喜歡的工具會有所幫助。…但這主要是為了方便,而不是兼容性。
如果您有幾個不同的圖像,從同一個基本發行版圖像中派生它們會很有用,讓 docker 跨圖像共享公共基礎(減少文件系統需求……)
理論上,容器中的應用程序可以依賴系統呼叫,該系統呼叫需要主機中的最低核心版本,但這在實踐中一定非常罕見。