怎样从docker上运行kibana

方法:使用docker-compose

官网教程:https://www.elastic.co/guide/en/kibana/current/docker.html

有两种方法:

1.自己写dockerfile,build image,然后用docker run命令启动

2.编写dockercompose.yml文件,直接用docker-compose up的命令启动,推荐此种方法。

笔者最终使用的是dockercompose方法,虽然第一种方法有时也可以使用,但是由于OS是Win10,总是出现难以名状的错误。两种方法下面都会介绍,如果有问题欢迎指出。

 

 

 

1. 使用docker compose.

 

 

docker compose是docker的一个简化操作命令,只需要三步。

1)编写dockerfile,设置app的环境(由于此处使用的是官方docker镜像,所以这步可以省略)

2)编写dockercompose.yml,设置app的服务

3)运行docker-compose up命令,启动服务

 

 

使用docker compose运行kibana的步骤如下:

(1)编写dockercompose.yml文件

 

 

在一个路径下建立dockercompose.yml文件,写入如下内容

version: "3"                                               #定义docker compose的版本 

services:
  kibanatest:
    image: docker.elastic.co/kibana/kibana-oss:[version]   #设置docker镜像,此处使用oss版,es上装了xpack的请去掉"-oss"
    container_name: [custom container name]                #自定义容器名称,随意
    volumes:                                               #这里列出更改或加入的文件,注意格式,这是一个数组
      - ./plugins:/usr/share/kibana/plugins:rw             #这里加入了一个plugin文件夹,将它里面的内容写入kibana/plugins文件夹下
    environment:
      ELASTICSEARCH_URL: [your elasticsearch url]          #设置elasticsearch服务器url
      OPS_INTERVAL: 60000
    ports:                                                 #设置kibana端口,注意这是一个数组
      - "5601:5601"

 

(2)cd [dockercompose.yml文件所在路径]

        docker-compose up

 

 

(3)打开浏览器,访问localhost:5601,这时就会出现kibana界面

  下面解释几个问题(我踩的坑):

 

 

(1)推荐使用官方镜像。开始我下的kibana源码,然后用npm start启动,不仅build的image比official docker image要大不少(官方镜像800多MB,自己build的1.31GB),而且自己写dockerfile经常会踩坑,而且资料也少。

  (2)  为什么使用oss镜像。我使用的es服务器上没有装xpack,所以使用normal version就会报错:_xpack index doesn't exist in XXX(具体记不清了,类似的)。这是因为normal version的docker image默认你装了xpack,所以你即使按照网上的说法将XPACK_ML.enabled, XPACK_MONITORING....等标志位设置成false,依然会报错。如果在es上装了xpack,如有需要在enviroment下设置XPACK的环境变量。

 

 

 

参考资料:https://github.com/elastic/kibana-docker/issues/27

关于optimization问题的讨论:https://discuss.elastic.co/t/docker-docker-compose-custom-kibana/102129

(有用的东西到这里就结束了,下面的方法是半成品,跑出来的同志们欢迎提意见)

 

 

2. 编写dockerfile

dockerfile的参考链接:https://github.com/rigon/docker-kibana-dev

1)编写dockerfile,我把elasticsearch_url全都替换成了自己的es服务器地址

 

 

2)建立镜像:

cd [Dockerfile所在的路径]

docker build [custom image name] -t [custom image path(我这里直接写了一个".")]

 

3)跑起来:

 

 

docker run -e "ELASTICSEARCH_URL=[elasticsearch服务器地址]"  [custom image name]

PS: 如果你在本地run的elasticsearch,不要把server address写成localhost:9200,这里需要建立network将二者连起来,或者设置--net = host。具体可以去google search(虽然我最终没跑出来┑( ̄Д  ̄)┍)

 

 

我用这种方法跑出来几回,但是大多数情况停在了optimization success in XXXs,访问localhost:5601也啥都不显示,但是log也不报错,奇哉怪哉。

 

PS:elastic论坛上有很多有用的资料,elastic的team member回答问题也很热情,有问题的筒子们可以参考一下。

你可能感兴趣的:(docker,kibana,elasticsearch)