在linux运行python代码报错(Illegal instruction (core dumped))

423 阅读1分钟

现象说明

我在Lniux上,使用docker部署python的项目。该项目使用了Tensorflow 1.14框架,启动的过程,报错 Illegal instruction (core dumped)。没有具体的错误信息。

尝试解决过程

  1. 我确定了docker镜像和宿主机的操作系统都是x64的,应该不是CPU架构的问题。
  2. 我启动容器后,进入容器,卸载重新安装了tensorflow等依赖,还是出现这个问题。说明不是安装包的版本问题。
  3. 通过网上搜索解决方法,找到一个类似的。原因是宿主机的CPU不支持Python的一些指令集。

原因具体来说是这样的。

我在物理机器上使用Proxmox 启动了一个虚拟机,在这个虚拟机上,进行docker容器部署。

问题是,物理机是支持全部的CPU指令,而 Proxmox虚拟机默认的虚拟CPU不是支持所有CPU 指令的,而虚拟机和容器的CPU指令集是一致的,就导致容器中的Python项目启动不起来。

换句话说,就算我最开始就直接在Proxmox启动的这个虚拟机上,直接部署Python项目,也是要失败的。与容器和Docker无关。

解决方法

1. 修改虚拟机的CPU类型和物理机一致

image.png

image.png

重启虚拟机

2. 重新安装Docker

卸载docker

sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc

安装官网的Docker docs.docker.com/engine/inst…

3. 重新部署容器

参考资料