快速简便地绕过Docker的架构图像规范?

快速简便地绕过Docker的架构图像规范?,docker,Docker,几个月前,我们改用Docker的原因之一是为了消除使用最新工具维护VM的需要,等等。我认为Docker只需简单地拉下映像并开始工作就会容易得多。然而,最近它变得相当痛苦 由于缺乏嵌套虚拟机支持,无法在Windows虚拟机中运行,并且需要数天的故障排除,在RHEL中运行它变得非常痛苦,有人说Docker和RHEL不能很好地协同工作,现在我遇到了Raspberry Pi 4的平台支持问题 当尝试在Raspberry Pi 4上运行我的容器时,它现在告诉我容器的体系结构与主机的体系结构不匹配 WARN

几个月前,我们改用Docker的原因之一是为了消除使用最新工具维护VM的需要,等等。我认为Docker只需简单地拉下映像并开始工作就会容易得多。然而,最近它变得相当痛苦

由于缺乏嵌套虚拟机支持,无法在Windows虚拟机中运行,并且需要数天的故障排除,在RHEL中运行它变得非常痛苦,有人说Docker和RHEL不能很好地协同工作,现在我遇到了Raspberry Pi 4的平台支持问题

当尝试在Raspberry Pi 4上运行我的容器时,它现在告诉我容器的体系结构与主机的体系结构不匹配

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm/v7) and no specific platform was requested
有点困惑,因为我希望Docker能给我们带来更多的灵活性和与客户平台的兼容性,但这似乎是相当痛苦的

据我所知,我们必须重新构建整个容器,并将arm容器推出到arm系统,将amd64推出到其他系统

我是否可以使用一种快速而肮脏的解决方法来运行容器并忽略体系结构?

Shared v.s.Simple Tag 要间接解决您提到的问题,可以使用多平台的共享标记。你可以看到区别

例如:

这些简单的标记使docker运行mongo:4.0-xenial能够在单个平台Linux上跨体系结构完成正确的操作,例如mongo:4.0-xenial。 共享标记使docker run mongo:4.0能够在Linux和所支持的各种Windows版本上大致工作 部队平台 为了直接解决您提到的问题,此警告以前曾出现在其他人身上。查看以下内容。修复方法是在使用docker run时强制平台运行,如下所示:

docker run --platform linux/arm64 image_name_or_id
确保在映像名称/id之前定义了-platform参数

构建多平台图像 docker run-platform参数已添加,但未添加到文档中!当您运行docker run-help时,会显示此对话框 平台字符串:如果服务器支持多平台,则设置平台


同意。非常感谢你的投入!现在就调查这件事!更新了我的答案。不,没有q&d解决方案。这是一个不同的处理器-为一个处理器编译的代码不能在另一个处理器上运行。