Linux

在為我的 Ubuntu 選擇 Docker 容器鏡像文件時,我需要在它們之間匹配什麼?

  • February 1, 2019

當為我的 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 跨圖像共享公共基礎(減少文件系統需求……)

理論上,容器中的應用程序可以依賴系統呼叫,該系統呼叫需要主機中的最低核心版本,但這在實踐中一定非常罕見。

引用自:https://unix.stackexchange.com/questions/498198