如何构建包含elasticsearch-head的个性化Docker镜像?

2026-06-10 07:577阅读0评论SEO教程
  • 内容介绍
  • 相关推荐

本文共计1506个文字,预计阅读时间需要7分钟。

如何构建包含elasticsearch-head的个性化Docker镜像?

欢迎访问我的GitHub,这里分类汇总了全部原创(含配套源码):https://github.com/zq2599/blog_demos关于elasticsearch-head插件:通过elasticsearch-head插件可以更方便地查询es,观察es状态,插件官网:https://github.com/mobz/elasticsearch-head

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):github.com/zq2599/blog_demos

关于elasticsearch-head插件

  • 通过elasticsearch-head插件可以更方便的查询es,观察es状态,插件官方地址:github.com/mobz/elasticsearch-head

为什么要自己制作elasticsearch-head的Docker镜像

  • 原因很简单:elasticsearch-head的官方Docker镜像只支持elasticsearch5.x版本,而现在elasticsearch6.x版本已经广泛使用了,以下就是elasticsearch-head官方的支持情况:
  • 先去hub.docker.com上搜索,如下图,最后一次更新已经是两年前,只支持elasticsearch5版本:
  • elasticsearch-head官网说得很清楚,只支持elasticsearch5、2、1版本,并不支持6,如下图:
    • 如果在Docker环境下运行elasticsearch版本是6.x版本,是没有与之匹配的head插件镜像的,此时的解决方法有以下三种:
    • 把head插件搭建在Docker环境之外,也就是在物理机部署head;
    • 寻找非官方的head镜像;
    • 掌握head插件镜像的制作方法,随时按照自己的需要制作支持任意版本的镜像;

    今天的文章讨论的就是第三种方法:自己制作elasticsearch-head插件;

    如何构建包含elasticsearch-head的个性化Docker镜像?

    实战环境

  • 操作系统:CentOS 7.6
  • docker:17.03.2-ce
  • docker-compose:version 1.23.2
  • 不用Docker的时候,elasticsearch-head是如何在物理机上部署的

    • 想做出elasticsearch-head镜像,先要对elasticsearch-head的常规部署方式有所了解,简单的罗列如下:

    • 准备好nodejs环境;
    • 下载elasticsearch-head源码;
    • 安装grunt-cli;
    • 安装elasticsearch-head;
    • 用grunt命令启动;
    • 更多部署elasticsearch-head的详情请参考《Linux环境快速搭建elasticsearch6.5.4集群和Head插件》;

    编写Dockerfile文件

    • 前面已清楚了head插件的常规部署流程,接下来的事情就简单了,按照上述流程制作Dockerfile,制作之前要注意以下几点:

    • 基础镜像选哪个?我这里选择的是nodejs的官方镜像,这样就可以不用搭建nodejs环境了,最好选择alpine版本,这样的镜像体积更小;
    • 多个shell命令的操作,尽量用&&连接起来,这样生成的镜像layer数更少,体积也会更小;
    • head插件的源码地址,我选用了master版本的地址,您可以根据自己的需要改成指定的分支;
    • 完整的Dockerfile内容如下,每一行都有详细的注释,就不多赘述了:
    #Docker image of elasticsearch-head # VERSION 6 # Author: bolingcavalry #基础镜像使用node:10.15.0,以便通过npm来安装head插件 FROM node:10.15.0-alpine #作者 MAINTAINER BolingCavalry <zq2599@gmail.com> #定义下载源文件的路径 ENV SRC_DOWN_PATH /usr/src/app #创建文件夹用于保存下载的源码 RUN mkdir -p $SRC_DOWN_PATH && \ #进入该文件夹 cd $SRC_DOWN_PATH && \ #下载源码 wget codeload.github.com/mobz/elasticsearch-head/zip/master && \ #解压 unzip master && \ #解压后,压缩文件可以删除了 rm master && \ #进入解压后的文件夹 cd elasticsearch-head-master && \ #设置为taobao,加速npm安装速度 npm config set registry registry.npm.taobao.org && \ #安装grunt npm install -g grunt-cli && \ #安装head npm install #设置默认工作目录为解压后的源码文件夹 WORKDIR $SRC_DOWN_PATH/elasticsearch-head-master #保留9100端口 EXPOSE 9100 #启动时即启动head服务 CMD [ "grunt", "server" ]

    构建镜像

    • 在Dockerfile所在目录执行以下命令即可构建镜像:
    docker build -t bolingcavalry/elasticsearch-head:6 .

    构建的过程中,执行npm install的时候会在github下载源码,此时有很大概率超时报错退出,多重试几次是可以成功的;

    • 构建成功后,执行命令docker history bolingcavalry/elasticsearch-head:6查看构建信息,如下:
    [root@hedy head]# docker history bolingcavalry/elasticsearch-head:6 IMAGE CREATED CREATED BY SIZE COMMENT e6833fce7a81 9 hours ago /bin/sh -c #(nop) CMD ["grunt" "server"] 0 B 34889db72a32 9 hours ago /bin/sh -c #(nop) EXPOSE 9100/tcp 0 B 761b38387909 9 hours ago /bin/sh -c #(nop) WORKDIR /usr/src/app/ela... 0 B 893cec2c77e6 9 hours ago /bin/sh -c mkdir -p $SRC_DOWN_PATH && cd $... 139 MB ead96e1a5663 9 hours ago /bin/sh -c #(nop) ENV SRC_DOWN_PATH=/usr/... 0 B 4648dcf3c904 9 hours ago /bin/sh -c #(nop) MAINTAINER BolingCavalr... 0 B 288d2f688643 4 weeks ago /bin/sh -c #(nop) CMD ["node"] 0 B <missing> 4 weeks ago /bin/sh -c apk add --no-cache --virtual .b... 5.08 MB <missing> 4 weeks ago /bin/sh -c #(nop) ENV YARN_VERSION=1.12.3 0 B <missing> 4 weeks ago /bin/sh -c addgroup -g 1000 node && ad... 61.2 MB <missing> 4 weeks ago /bin/sh -c #(nop) ENV NODE_VERSION=10.15.0 0 B <missing> 5 weeks ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0 B <missing> 5 weeks ago /bin/sh -c #(nop) ADD file:2ff00caea4e83df... 4.41 MB

    验证镜像

    • 接下来在Docker上部署elasticsearch+elasticsearch-head,验证做好的镜像是否好用,创建docker-compose.yml文件,内容如下:
    version: '2.2' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4 container_name: elasticsearch environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - 192.168.1.101:9200

  • 看到上述信息表示es启动成功了;

  • 如下图,elasticsearch-head的访问地址是:192.168.1.101:9100

  • 创建索引、文档,再在head页面上查看一切正常,如下图,与物理机环境无异:
  • 将镜像提交到hub.docker.com

    • 前面构建好的镜像只存在本地电脑,我们可以将其提交到docker仓库给更多用户使用:

    • 提交镜像到hub.docker.com网站,需要用到该网站的账号,请确保您已经在此网站注册过;
    • 执行docker login登录,期间会要求输入用户名和密码;
    • 执行命令docker push bolingcavalry/elasticsearch-head:6,即可将本地镜像push到hub.docker.com;
    • 注意镜像名称的前缀,例如我这里的前缀是bolingcavalry,要和账号保持一致;
    • 提交成功后,在hub.docker.com网站即可看到此镜像,如下图,此时任何人都可以pull来下使用了:
    • 至此,整个head插件的镜像制作实战已完成,希望能给您提供参考,做出更适合自己的定制镜像;

    欢迎关注51CTO博客:程序员欣宸

    学习路上,你不孤单,欣宸原创一路相伴...

    本文共计1506个文字,预计阅读时间需要7分钟。

    如何构建包含elasticsearch-head的个性化Docker镜像?

    欢迎访问我的GitHub,这里分类汇总了全部原创(含配套源码):https://github.com/zq2599/blog_demos关于elasticsearch-head插件:通过elasticsearch-head插件可以更方便地查询es,观察es状态,插件官网:https://github.com/mobz/elasticsearch-head

    欢迎访问我的GitHub

    这里分类和汇总了欣宸的全部原创(含配套源码):github.com/zq2599/blog_demos

    关于elasticsearch-head插件

    • 通过elasticsearch-head插件可以更方便的查询es,观察es状态,插件官方地址:github.com/mobz/elasticsearch-head

    为什么要自己制作elasticsearch-head的Docker镜像

    • 原因很简单:elasticsearch-head的官方Docker镜像只支持elasticsearch5.x版本,而现在elasticsearch6.x版本已经广泛使用了,以下就是elasticsearch-head官方的支持情况:
  • 先去hub.docker.com上搜索,如下图,最后一次更新已经是两年前,只支持elasticsearch5版本:
  • elasticsearch-head官网说得很清楚,只支持elasticsearch5、2、1版本,并不支持6,如下图:
    • 如果在Docker环境下运行elasticsearch版本是6.x版本,是没有与之匹配的head插件镜像的,此时的解决方法有以下三种:
    • 把head插件搭建在Docker环境之外,也就是在物理机部署head;
    • 寻找非官方的head镜像;
    • 掌握head插件镜像的制作方法,随时按照自己的需要制作支持任意版本的镜像;

    今天的文章讨论的就是第三种方法:自己制作elasticsearch-head插件;

    如何构建包含elasticsearch-head的个性化Docker镜像?

    实战环境

  • 操作系统:CentOS 7.6
  • docker:17.03.2-ce
  • docker-compose:version 1.23.2
  • 不用Docker的时候,elasticsearch-head是如何在物理机上部署的

    • 想做出elasticsearch-head镜像,先要对elasticsearch-head的常规部署方式有所了解,简单的罗列如下:

    • 准备好nodejs环境;
    • 下载elasticsearch-head源码;
    • 安装grunt-cli;
    • 安装elasticsearch-head;
    • 用grunt命令启动;
    • 更多部署elasticsearch-head的详情请参考《Linux环境快速搭建elasticsearch6.5.4集群和Head插件》;

    编写Dockerfile文件

    • 前面已清楚了head插件的常规部署流程,接下来的事情就简单了,按照上述流程制作Dockerfile,制作之前要注意以下几点:

    • 基础镜像选哪个?我这里选择的是nodejs的官方镜像,这样就可以不用搭建nodejs环境了,最好选择alpine版本,这样的镜像体积更小;
    • 多个shell命令的操作,尽量用&&连接起来,这样生成的镜像layer数更少,体积也会更小;
    • head插件的源码地址,我选用了master版本的地址,您可以根据自己的需要改成指定的分支;
    • 完整的Dockerfile内容如下,每一行都有详细的注释,就不多赘述了:
    #Docker image of elasticsearch-head # VERSION 6 # Author: bolingcavalry #基础镜像使用node:10.15.0,以便通过npm来安装head插件 FROM node:10.15.0-alpine #作者 MAINTAINER BolingCavalry <zq2599@gmail.com> #定义下载源文件的路径 ENV SRC_DOWN_PATH /usr/src/app #创建文件夹用于保存下载的源码 RUN mkdir -p $SRC_DOWN_PATH && \ #进入该文件夹 cd $SRC_DOWN_PATH && \ #下载源码 wget codeload.github.com/mobz/elasticsearch-head/zip/master && \ #解压 unzip master && \ #解压后,压缩文件可以删除了 rm master && \ #进入解压后的文件夹 cd elasticsearch-head-master && \ #设置为taobao,加速npm安装速度 npm config set registry registry.npm.taobao.org && \ #安装grunt npm install -g grunt-cli && \ #安装head npm install #设置默认工作目录为解压后的源码文件夹 WORKDIR $SRC_DOWN_PATH/elasticsearch-head-master #保留9100端口 EXPOSE 9100 #启动时即启动head服务 CMD [ "grunt", "server" ]

    构建镜像

    • 在Dockerfile所在目录执行以下命令即可构建镜像:
    docker build -t bolingcavalry/elasticsearch-head:6 .

    构建的过程中,执行npm install的时候会在github下载源码,此时有很大概率超时报错退出,多重试几次是可以成功的;

    • 构建成功后,执行命令docker history bolingcavalry/elasticsearch-head:6查看构建信息,如下:
    [root@hedy head]# docker history bolingcavalry/elasticsearch-head:6 IMAGE CREATED CREATED BY SIZE COMMENT e6833fce7a81 9 hours ago /bin/sh -c #(nop) CMD ["grunt" "server"] 0 B 34889db72a32 9 hours ago /bin/sh -c #(nop) EXPOSE 9100/tcp 0 B 761b38387909 9 hours ago /bin/sh -c #(nop) WORKDIR /usr/src/app/ela... 0 B 893cec2c77e6 9 hours ago /bin/sh -c mkdir -p $SRC_DOWN_PATH && cd $... 139 MB ead96e1a5663 9 hours ago /bin/sh -c #(nop) ENV SRC_DOWN_PATH=/usr/... 0 B 4648dcf3c904 9 hours ago /bin/sh -c #(nop) MAINTAINER BolingCavalr... 0 B 288d2f688643 4 weeks ago /bin/sh -c #(nop) CMD ["node"] 0 B <missing> 4 weeks ago /bin/sh -c apk add --no-cache --virtual .b... 5.08 MB <missing> 4 weeks ago /bin/sh -c #(nop) ENV YARN_VERSION=1.12.3 0 B <missing> 4 weeks ago /bin/sh -c addgroup -g 1000 node && ad... 61.2 MB <missing> 4 weeks ago /bin/sh -c #(nop) ENV NODE_VERSION=10.15.0 0 B <missing> 5 weeks ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0 B <missing> 5 weeks ago /bin/sh -c #(nop) ADD file:2ff00caea4e83df... 4.41 MB

    验证镜像

    • 接下来在Docker上部署elasticsearch+elasticsearch-head,验证做好的镜像是否好用,创建docker-compose.yml文件,内容如下:
    version: '2.2' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4 container_name: elasticsearch environment: - cluster.name=docker-cluster - bootstrap.memory_lock=true - 192.168.1.101:9200

  • 看到上述信息表示es启动成功了;

  • 如下图,elasticsearch-head的访问地址是:192.168.1.101:9100

  • 创建索引、文档,再在head页面上查看一切正常,如下图,与物理机环境无异:
  • 将镜像提交到hub.docker.com

    • 前面构建好的镜像只存在本地电脑,我们可以将其提交到docker仓库给更多用户使用:

    • 提交镜像到hub.docker.com网站,需要用到该网站的账号,请确保您已经在此网站注册过;
    • 执行docker login登录,期间会要求输入用户名和密码;
    • 执行命令docker push bolingcavalry/elasticsearch-head:6,即可将本地镜像push到hub.docker.com;
    • 注意镜像名称的前缀,例如我这里的前缀是bolingcavalry,要和账号保持一致;
    • 提交成功后,在hub.docker.com网站即可看到此镜像,如下图,此时任何人都可以pull来下使用了:
    • 至此,整个head插件的镜像制作实战已完成,希望能给您提供参考,做出更适合自己的定制镜像;

    欢迎关注51CTO博客:程序员欣宸

    学习路上,你不孤单,欣宸原创一路相伴...