Docker错误标准“u init”u linux.go:185:exec用户进程导致”;Qnap TS131P的exec格式错误

Docker错误标准“u init”u linux.go:185:exec用户进程导致”;Qnap TS131P的exec格式错误,docker,arm,qnap,Docker,Arm,Qnap,我的Docker文件是song/songkong 它与Synology DS218+磁盘站(英特尔)配合使用效果良好 我购买了一个Qnap TS-131P来测试Qnap,但也确认它可以与Arm处理器一起工作,因为Qnap支持Arm处理器上的Docker,而Synology不支持 当我尝试从映像启动容器时,我得到一个错误 standard_init_linux.go:185: exec user process caused "exec format error 让我觉得问题出在arm处理器上

我的Docker文件是song/songkong

它与Synology DS218+磁盘站(英特尔)配合使用效果良好

我购买了一个Qnap TS-131P来测试Qnap,但也确认它可以与Arm处理器一起工作,因为Qnap支持Arm处理器上的Docker,而Synology不支持

当我尝试从映像启动容器时,我得到一个错误

standard_init_linux.go:185: exec user process caused "exec format error 
让我觉得问题出在arm处理器上


但我感到困惑,因为我认为Docker的全部目的是隐藏这些特定于系统的细节,如何(我)修复Docker文件以使其在Qnap上工作。

问题确实在于Docker映像文件是特定于体系结构的(至少是默认的)。因此,在英特尔上构建的Docker文件只能在英特尔上工作,而在Arm32上构建的Docker文件只能在Arm32上工作

似乎有很多方法可以在Intel设备上构建Arm,但这仍然会让您分发两个单独的映像。如果您有一个物理Arm设备,那么直接在Arm设备上构建Arm映像要容易得多


您还需要确保您的基础映像支持您的体系结构,但官方映像现在已构建为多拱映像,因此这通常不是问题。

Docker不会神奇地使x86二进制文件能够在ARM上运行。你需要重建一个ARM图像。@DavidMaze好的,但我怎么做呢,它只是用DockerHub构建的,我看不到ARM选项,这是否也意味着应该有两个独立的图像,用户必须确定使用哪一个。
standard_init_linux.go:185: exec user process caused "exec format error