standard_init_linux.go:207: exec user process caused "exec format error"
发生错误的情景
docker容器启动失败,使用docker logs查看到的错误信息。
客户因为国产化需求,服务器从centOS换到了统信UOS,原本在centOS能正常运行的image,在统信UOS会发生如题错误。
错误原因
楼主查阅了大量的资料 确定了是CPU架构不同而造成的原因,之前centOS的CPU架构是x86,而统信UOS是arm64 ,如果各位遇到错误的情景和我一样,可以分别在两台机器上直接使用"uname -m"指令进行查看,如果错误的原因和我一样,可以继续往下阅读。但如果查看出来两台机器的CPU架构一样,以下解决方式可能无法解决你的问题。
解决方式
1.在需要运行的机器上重新制作image
这种方式比较简单,使用docker build在对应的cpu架构平台的机器上直接产生新的image即可
2.docker制作跨平台的image
因楼主的客户是国有企业特别注重安全,所以服务器也都是层层加密且无外网,导致无法在arm64的机器上面产生新的image 并且身边也找不到该CPU架构的机器,最终使用了buildx来制作
楼主的开发环境如下:
macOS : 10.15.7
docker : 20.10.7
- 使用如下命令 设置环境变量 DOCKER_CLI_EXPERIMENTAL 来启用buildx插件
$ export DOCKER_CLI_EXPERIMENTAL=enabled