我可以 运行 一个 docker 容器在 IBM Power 系统上执行 x86 构建吗?
Can I run a docker container doing a x86 build on a IBM Power system?
我们的构建设置被备份到一个大的 docker 容器中(基本上是一个 2 GB 的映像,本身带有一个完整的 X86 linux)。
我们实际搭建的方式有两种:官方的方式是jenkins环境(运行在X86硬件上)。但我们也有一些 "side X86 server" 运行 RH 7。开发人员可以登录到该 RH 服务器并自行启动特定构建(使用上述 docker 图像)。
那些 RH 服务器将在某个时候关闭,将被 IBM Power8 机器取代(运行 RH7 Little Endian for power)。
我只是想知道:我们现有的构建设置和 docker 图像是否有可能只在 Power8 上工作?或者是基本的技术问题导致它不太可能甚至不值得尝试?
现有的构建设置?不确定!
Docker 图片?不,甚至不要尝试。
Docker 图像实际上是多层,通过相应的存储驱动程序和后备文件系统存储在文件系统上(如 docker info
的输出所示)。
如果存储 driver/backing 文件系统已更改(当 OS 更改时可能是这样),旧的 docker 图像将不再有效。这意味着必须肯定地重建它们。
您可以使用现有的构建方法和脚本,几乎保持不变,但您需要重建实际图像。
你不能在 Power 上直接 运行 x86 二进制文件(在非常低的级别上,机器代码的字节不同)。 Docker 不包含任何类型的虚拟化层;它进行了一系列设置以将容器与主机隔离开来,然后 运行 直接将二进制文件放入映像中。
如果您的 Jenkins 设置有足够的图像名称和版本标签参数,那么您应该能够 运行 x86 和 Power 设置并排;您需要在构建的图像名称或标签中的某处对架构进行编码;例如,repo.example.com/app/build:20180904-power
。 (我不知道如果你控制所有的机器,哪一个更好。)如果你有一个私人仓库,你可以在路径的前面对它进行编码,最后使用像 repo.example.com/power/build:20180904
这样的图像名称.
您需要仔细检查所有具有 Docker 图像引用的地方是否已正确参数化(无论如何这是一个很好的做法)。这将包括任何直接的 docker run
命令;任何 Docker Compose 或 Kubernetes YAML 文件或类似的工件;和 the FROM line of any Dockerfiles.
我们的构建设置被备份到一个大的 docker 容器中(基本上是一个 2 GB 的映像,本身带有一个完整的 X86 linux)。
我们实际搭建的方式有两种:官方的方式是jenkins环境(运行在X86硬件上)。但我们也有一些 "side X86 server" 运行 RH 7。开发人员可以登录到该 RH 服务器并自行启动特定构建(使用上述 docker 图像)。
那些 RH 服务器将在某个时候关闭,将被 IBM Power8 机器取代(运行 RH7 Little Endian for power)。
我只是想知道:我们现有的构建设置和 docker 图像是否有可能只在 Power8 上工作?或者是基本的技术问题导致它不太可能甚至不值得尝试?
现有的构建设置?不确定!
Docker 图片?不,甚至不要尝试。
Docker 图像实际上是多层,通过相应的存储驱动程序和后备文件系统存储在文件系统上(如 docker info
的输出所示)。
如果存储 driver/backing 文件系统已更改(当 OS 更改时可能是这样),旧的 docker 图像将不再有效。这意味着必须肯定地重建它们。
您可以使用现有的构建方法和脚本,几乎保持不变,但您需要重建实际图像。
你不能在 Power 上直接 运行 x86 二进制文件(在非常低的级别上,机器代码的字节不同)。 Docker 不包含任何类型的虚拟化层;它进行了一系列设置以将容器与主机隔离开来,然后 运行 直接将二进制文件放入映像中。
如果您的 Jenkins 设置有足够的图像名称和版本标签参数,那么您应该能够 运行 x86 和 Power 设置并排;您需要在构建的图像名称或标签中的某处对架构进行编码;例如,repo.example.com/app/build:20180904-power
。 (我不知道如果你控制所有的机器,哪一个更好。)如果你有一个私人仓库,你可以在路径的前面对它进行编码,最后使用像 repo.example.com/power/build:20180904
这样的图像名称.
您需要仔细检查所有具有 Docker 图像引用的地方是否已正确参数化(无论如何这是一个很好的做法)。这将包括任何直接的 docker run
命令;任何 Docker Compose 或 Kubernetes YAML 文件或类似的工件;和 the FROM line of any Dockerfiles.