Docker

為什麼 docker 圖像是特定於架構的?

  • June 10, 2021

我想更好地理解——為什麼 Docker 圖像是特定於架構的?為什麼與 ARM64 AArch32 等相比,ARM 處理器架構需要不同的圖像?

Docker 鏡像顯然包含特定於處理器的指令,這使得它們依賴於架構。docker圖像

的哪一部分包含特定於處理器的指令為什麼

為什麼Docker-Runtime 不提供獨立於架構的抽象層?

是不是因為該層將與 VM 中的 HyperVisor 層相媲美,並且不再“輕量級”?

docker 鏡像的預期內容是什麼?一個應用程序 + 所有支持庫和任何其他必需的文件。

這在實踐中通常意味著什麼?基本上是精簡的 Linux 使用者空間 + 應用程序。

當然,不是每個文件都是特定於架構的,但是二進製文件和庫是針對某些特定架構編譯的(無論它們是否放置在 docker 映像中,顯然都是這種情況)。

這裡沒有魔法,docker 鏡像只是打包和分發應用程序的一種手段。它不會將針對 x86-64、arm64 或其他任何東西編譯的應用程序轉換為與架構無關的應用程序。

如果應用程序是某種非編譯語言,例如 Python 應用程序或 Nodejs 應用程序,那麼上述內容僅適用於執行時;Python 執行時或 Nodejs 執行時是為某些特定架構建構的,並且需要為相同架構建構的適當支持庫。

引用自:https://serverfault.com/questions/1066298