一直以为docker是到处运行的平台,今天碰到的问题,颠覆了这个观点。
两个场景:
制作、测试docker是在本地的ubuntu16.04上进行的。
运行是在aliyun上的ubuntu14.04上进行的。
本地测试好好的docker,传到aliyun上就出现jvm crash的错误。百思不得其解。
aliyun上删除了LD_LIBRARY_PATH的环境变量设置之后就ok了。
if [ "$(getconf WORD_BIT)" = "32" ] && [ "$(getconf LONG_BIT)" = "64" ]; then
LD_LIBRARY_PATH=$install_root/linux-x86-64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
fi
有谁知道原因么?
原因清楚了:docker跨平台运行是没有问题的。该问题的原因是:aliyun上的docker和本地的docker不完全一致。是通过传到制作docker需要的文件和dockerfile,然后重新制作的。
通过直接docker的save和load,docker运行没有问题。
aliyun上dockerfile的from的部分,如果是latest的,则可能变化了,导致了这个问题。