Update
官方的Dockerfile在3月24日增加了对arm64平台的支持,可以直接拉取官方的dockerfile在64位的树莓派上docker build了:
在树莓派上安装ElasticSearch时, 我本想通过docker快速安装,发现在arm平台没有官方的ElasticSearch的镜像。而其他的个人制作的镜像来路不明,版本落后,很久不更新。还是得自己动手,才能丰衣足食。
修改
在github上找到官方的dockerfile: ElasticSearch Dockerfile, clone到本地做一些修改,使之适配arm平台,主要的修改点如下:
基础镜像由centos更改为debian, 由此构建出的镜像体积更小一点了。为什么不用alpine?因为apline中的musl libc与java依赖的标准的glibc并不兼容, 所以无法从官方的apline镜像中顺利的构建,用debian就没那么麻烦了。
将ElasticSearch中自带的jdk替换为适用于arm64平台的OpenJDK13U-jdk_aarch64_linux,版本与自带的保持一致,为AdoptOpenJDK13.0.1_9。官方下载的ElasticSearch无法在arm平台运行的根本原因在于它自带的jdk仅能运行在amd64平台,将它替换为能运行在arm64平台的jdk就行了。
ElasticSearch的配置文件增加以下配置:
1 | xpack.ml.enabled: false |
arm平台不支持xpack的机器学习,不增加这一行配置会出错导致无法运行。
构建
完整的最新版(7.5)ElasticSearch的arm64平台的Dockerfile:elasticsearch-docker-arm64
构建方法:
1 | git clone https://github.com/hsxsix/elasticsearch-docker-arm64.git |