Docker容器退出码132

13

现有的容器(如kafka、mysql、postgres)在我的计算机上正常运行,docker像往常一样工作良好。然后我想要下载新版本的postgres,但docker run命令总是显示exit code 132

不管我想启动哪个容器,所有容器都会立即以132退出。 我检查了docker eventsdocker logs,但都是空的。

hello-world这样的简单容器可以正常启动。

我找到了一篇文章提到sse4_2,但它是由CPU支持的。 据我所记,在它工作之前没有系统更新。

可能的原因是什么呢?


1
你的CPU是否支持AVX指令集?[供参考。](https://stackoverflow.com/questions/61403464/installing-superset-superset-db-upgrade-exit-with-code-132) - ZOOU Qinn
1
还出现了退出代码132,表示CPU缺少AVX2指令集,退出代码似乎与非法操作码信号有关。 - Martin
如果您的Docker主机是RHEL 7,则必须使用Podman而不是Docker命令。否则,请使用其他Linux发行版,例如Ubuntu作为您的Docker主机。更多信息请参见https://bugzilla.redhat.com/show_bug.cgi?id=1795574。 - VVVDevops
你解决了你的问题吗? - David
我对mongo:6.0.2的问题完全同意...如果你检查已退出的容器,你可以在docker日志输出中看到它。 - undefined
1个回答

8

第一步:
检查您的CPU是否支持amd64-avx:
$ sudo cat /proc/cpuinfo | grep avx
如果它支持AVX,则会突出显示avx,否则将返回空白。

第二步:
为了解决问题,请运行支持amd64而不是amd64-avx的映像,这可能意味着您需要运行较早版本。

好的例子是mongodb docker映像,最新版本支持amd64-avx,并且将拒绝在不支持avx的CPU上运行并退出错误代码132。

但是当您运行mongodb的4.4版本时,就可以正常运行。

有关更多信息,请访问:
Docker and -march native


实际上,即使您在 Docker 容器内运行该程序,日志中仍会出现关于此问题的错误信息。 - Edward Casanova
1
给未来的访问者:我在运行Docker Desktop for Mac时开启了“在Apple Silicon上使用Rosetta进行x86/amd64仿真”。相关的容器不喜欢这样,一旦我关闭它,一切都正常工作了。没有它,其他一些容器会出现核心转储问题,所以...你要么有麻烦,要么没麻烦! - ndtreviv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接