我想更好地理解——为什么 Docker 图像是特定于架构的?为什么与 ARM64 AArch32 等相比,ARM 处理器架构需要不同的图像?
Docker 镜像显然包含特定于处理器的指令,这使得它们依赖于架构。docker图像
的哪一部分包含特定于处理器的指令,为什么?
为什么Docker-Runtime 不提供独立于架构的抽象层?
是不是因为该层将与 VM 中的 HyperVisor 层相媲美,并且不再“轻量级”?
我想更好地理解——为什么 Docker 图像是特定于架构的?为什么与 ARM64 AArch32 等相比,ARM 处理器架构需要不同的图像?
Docker 镜像显然包含特定于处理器的指令,这使得它们依赖于架构。docker图像
的哪一部分包含特定于处理器的指令,为什么?
为什么Docker-Runtime 不提供独立于架构的抽象层?
是不是因为该层将与 VM 中的 HyperVisor 层相媲美,并且不再“轻量级”?
docker 镜像的预期内容是什么?一个应用程序 + 所有支持库和任何其他必需的文件。
这在实践中通常意味着什么?基本上是精简的 Linux 用户空间 + 应用程序。
当然,不是每个文件都是特定于架构的,但是二进制文件和库是针对某些特定架构编译的(无论它们是否放置在 docker 映像中,显然都是这种情况)。
这里没有魔法,docker 镜像只是打包和分发应用程序的一种手段。它不会将针对 x86-64、arm64 或其他任何东西编译的应用程序转换为与架构无关的应用程序。
如果应用程序是某种非编译语言,比如 Python 应用程序或 Nodejs 应用程序,那么上面的内容只适用于运行时;Python 运行时或 Nodejs 运行时是为某些特定架构构建的,并且需要为相同架构构建的适当支持库。