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

问题描述 投票:0回答:1

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

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

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

docker portability
1个回答
0
投票

Docker容器运行在真实的CPU上,使用底层操作系统的真实内核来提供基础环境,这里不存在模拟。因此,代码受限于其编写的 CPU 架构,就像您根本不使用 Docker 一样。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.