Docker 的硬件可移植性限制是什么?

What are Docker's HW portability limitations?

提问人:wothke 提问时间:10/19/2023 更新时间:10/19/2023 访问量:21

问:

我只读过一些介绍性文章——其中一些可能已经过时了,现在可能已经过时了。关于可移植性,这些文本通常讨论不同的操作系统版本,而不是实际的硬件。所以我想知道:

假设我有一些现有的 C/C++ 代码库,并且代码使用内联 x86 ASM 片段进行性能优化(例如,使用 MMX 或特定于某些 Intel 或 AMD 处理器的类似操作),即为了在不同的 CPU 架构(例如 ARM64)上运行此代码,您显然必须使用某种 CPU 仿真。

在使用代码之前是否需要替换不可移植的汇编代码,或者该代码是否仍然可以使用,但只能在使用相应 CPU 架构的服务器硬件上使用,或者 Docker 是否提供任何 CPU 仿真工具,使其能够在任何地方实际运行相应的代码?Docker 上下文中有哪些可用选项?

Docker 可移植性

评论


答:

2赞 Alejandro 10/19/2023 #1

Docker 容器运行在真实的 CPU 上,并使用底层操作系统的真实内核来提供基本环境,这里没有模拟这回事。因此,代码被限制在编写代码的 CPU 架构中,就像你根本不使用 Docker 一样。

因此,在这种情况下,您的代码将被限制为支持这些内联汇编指令(以及编译器生成的代码)的特定 CPU,就像在普通操作系统上运行代码一样。

Docker 最擅长的是提供隔离的软件环境,用于在容器中运行程序,这样它们就不会相互干扰,也不会干扰操作系统,但硬件仍然是真正的。例如,需要某种仿真器才能在 ARM 上运行这些未经修改的二进制文件。