现象说明
我在Lniux上,使用docker部署python的项目。该项目使用了Tensorflow 1.14框架,启动的过程,报错 Illegal instruction (core dumped)。没有具体的错误信息。
尝试解决过程
- 我确定了docker镜像和宿主机的操作系统都是x64的,应该不是CPU架构的问题。
- 我启动容器后,进入容器,卸载重新安装了tensorflow等依赖,还是出现这个问题。说明不是安装包的版本问题。
- 通过网上搜索解决方法,找到一个类似的。原因是宿主机的CPU不支持Python的一些指令集。
原因具体来说是这样的。
我在物理机器上使用Proxmox 启动了一个虚拟机,在这个虚拟机上,进行docker容器部署。
问题是,物理机是支持全部的CPU指令,而 Proxmox虚拟机默认的虚拟CPU不是支持所有CPU 指令的,而虚拟机和容器的CPU指令集是一致的,就导致容器中的Python项目启动不起来。
换句话说,就算我最开始就直接在Proxmox启动的这个虚拟机上,直接部署Python项目,也是要失败的。与容器和Docker无关。
解决方法
1. 修改虚拟机的CPU类型和物理机一致
重启虚拟机
2. 重新安装Docker
卸载docker
sudo apt-get autoremove docker docker-ce docker-engine docker.io containerd runc
安装官网的Docker docs.docker.com/engine/inst…