安装

因为我们需要使用docker来进行安装,我们必须安装:

  • docker:根据不同的操作系统,请按照要求安装docker。可以到网站https://docs.docker.com/去安装
  • docker-compose。这个可以到网站https://docs.docker.com/compose/install/#install-using-pip去安装

用docker来安装Elasticsearch

下载docker image

获取Docker的Elasticsearch就像对Elastic Docker注册表发出docker pull命令一样简单。

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.2

上面是以Elasticsearch 7.3.2为例来示范的。在实际的使用中,可以替换它用自己喜欢的版本。

开发或测试环境

从命令行运行Elasticsearch。使用以下命令可以快速启动Elasticsearch以进行开发或测试:

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.3.2

请注意single-node discovery,该发现允许绕过单节点开发集群中的bootstrap checks 检查。

生产环境

vm.max_map_count内核设置需要设置为至少262144才能用于生产环境。

vm.max_map_count设置应该在/etc/sysctl.conf中永久设置:

$ grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144

要在实时系统上应用该设置,请执行以下操作:

sysctl -w vm.max_map_count = 262144

用docker来安装Kibana

下载docker image

docker pull docker.elastic.co/kibana/kibana:7.3.2

开发或测试环境

可以使用以下命令快速启动Kibana并将其连接到本地Elasticsearch容器以进行开发或测试:

docker run --link YOUR_ELASTICSEARCH_CONTAINER_NAME_OR_ID:elasticsearch -p 5601:5601 {docker-repo}:{version}

针对我们的情况,我们首先按照上面的步骤把Elasticsearch的docker运行起来,然后执行如下的命令:

docker ps

显示的结果如下:

    CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS              PORTS                                            NAMES
3839f34c1d2d docker.elastic.co/elasticsearch/elasticsearch:7.3.2 "/usr/local/bin/dock…" 7 minutes ago Up 7 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp admiring_matsumoto

上面的docker信息是已经安装好的的Elasticsearch的docker信息。我们然后执行如下的命令:

docker run --link 3839f34c1d2d:elasticsearch -p 5601:5601 docker.elastic.co/kibana/kibana:7.3.2

这样我们的Kibana docker就起来了。

使用docker-compose来启动Elasticsearch和Kibana

在这一步,我们假定我们已经下载好Elasticsearch和Kibana的docker image。如果你还没有这么做,可以执行如下的命令下载:

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.2
docker pull docker.elastic.co/kibana/kibana:7.3.2

紧接着下来,我们来创建一个叫做docker的目录,并在这个目录里创建一个叫做docker-compose.yml的文件。它的内容如下:

    version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
container_name: es01
environment:
- node.name=es01
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=es01,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
container_name: es02
environment:
- node.name=es02
- discovery.seed_hosts=es01
- cluster.initial_master_nodes=es01,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata02:/usr/share/elasticsearch/data
networks:
- esnet kibana:
image: docker.elastic.co/kibana/kibana:7.3.2
container_name: kibana
ports: ['5601:5601']
networks: ['esnet']
environment:
- SERVER_NAME=kibana.localhost
- ELASTICSEARCH_HOSTS=http://es01:9200
- I18N_LOCALE=zh-CN
- ELASTICSEARCH_USERNAME=elastic
- ELASTICSEARCH_PASSWORD=mypasword
depends_on: ['es01'] volumes:
esdata01:
driver: local
esdata02:
driver: local networks:
esnet:

在这个配置中,我们创建了两个Elasticsearch的node:es01及es02。节点es01侦听localhost:9200,而es02通过Docker网络与es01对话。同时我们也创建了另外一个kibana的docker。我们可以在environment中配置它所需要的参数。

等我们创建好这个docker-compose.yml文件后,我们在当前的目录下,打入如下的命令:

docker-compose up

或者:

docker-compose up -d

这里的-d选项表示在detached模式下,运行容器在后台。

我们最终可以在浏览器中看见我们的Kibana被启动的样子

如同我们之前的设置一样, 它运行起来的Locale设置的是中文。我们也可以同时看到两个被启动的Elasticsearch的节点:

一旦docker启动后,我们可以通过docker的命令来执行一些命令,比如

docker exec es01 ls /usr/share/elasticsearch

我们可以通过如下的命令进入到docker进行安装等:

docker exec -it es01 /bin/bash

    $ docker exec -it es01 /bin/bash
[root@ec4d19f59a7d elasticsearch]# ls
LICENSE.txt README.textile config jdk logs plugins
NOTICE.txt bin data lib modules
[root@ec4d19f59a7d elasticsearch]#

这里的es01是我们的Elasticsearch实例的名称。

我们也可以通过如下的方式来配置Kibana。我们可以在docker-compose.yml的目录下创建另外一个叫做kibana.yml的文件:

kibana.yml

    #
# ** THIS IS AN AUTO-GENERATED FILE **
# # Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
i18n.locale: "zh-CN"
xpack.monitoring.ui.container.elasticsearch.enabled: true

这里我们做了一些简单的设置,比如我们配置了locale为中文。我们可以修改我们的docker-compose.yml文件如下:

docker-compose.yml

    version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
container_name: es01
environment:
- node.name=es01
- discovery.seed_hosts=es02
- cluster.initial_master_nodes=es01,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
container_name: es02
environment:
- node.name=es02
- discovery.seed_hosts=es01
- cluster.initial_master_nodes=es01,es02
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata02:/usr/share/elasticsearch/data
networks:
- esnet
kibana:
image: docker.elastic.co/kibana/kibana:7.3.2
container_name: kibana
networks: ['esnet']
ports: ['5601:5601']
environment:
- ELASTICSEARCH_HOSTS=http://es01:9200
volumes:
- ./kibana.yml:/usr/share/kibana/config/kibana.yml volumes:
esdata01:
driver: local
esdata02:
driver: local networks:
esnet:

在这里,我们通过在kibana中的volumes来把本地的kibana.yml文件bind mount到我们的docker之中的image里。这样它代替docker里的/usr/share/kibana/config/kibana.yml文件从而使用我们在本地设置的kibana.yml文件。

当docker把所有的容器都跑起来后,我们可以通过如下的命令来查看:

    $ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------
es01 /usr/local/bin/docker-entr ... Up 0.0.0.0:9200->9200/tcp,
9300/tcp
es02 /usr/local/bin/docker-entr ... Up 9200/tcp, 9300/tcp
kibana /usr/local/bin/dumb-init - ... Up 0.0.0.0:5601->5601/tcp

它显示了所有的端口的使用情况。

我们可以通过如下的办法把docker实例都停下来:

docker-compose down

这样我们很快地部署我们的Elasticsearch集群。

参考:

【1】https://www.elastic.co/guide/en/kibana/7.3/docker.html

【2】https://www.elastic.co/guide/en/elasticsearch/reference/7.3/install-elasticsearch.html

Elastic:用Docker部署Elastic栈的更多相关文章

  1. Elastic:用 Docker 部署 Elastic Stack

    文章转载自:https://elasticstack.blog.csdn.net/article/details/100919273 前提条件 首选需要在主机上安装好docker和docker-com ...

  2. Elastic:为Elastic Docker部署设置安全

    文章转载自:https://elasticstack.blog.csdn.net/article/details/105710973 创建docker-compose.yml 在之前的教程中,那里使用 ...

  3. Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈

    版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/98 来源:腾云阁 https://www.qclou ...

  4. docker安装elastic search和kibana

    安装目标 使用docker安装elastic search和kibana,版本均为7.17.1 安装es 1. docker pull 去dockerhub看具体版本,这里用7.17.1 docker ...

  5. Docker部署Elasticsearch集群

    http://blog.sina.com.cn/s/blog_8ea8e9d50102wwik.html Docker部署Elasticsearch集群 参考文档: https://hub.docke ...

  6. Docker日志管理--docker部署安装ELK (十一)--技术流ken

    Docker logs 对于一个运行的容器,Docker 会将日志发送到 容器的 标准输出设备(STDOUT)和标准错误设备(STDERR),STDOUT 和 STDERR 实际上就是容器的控制台终端 ...

  7. 使用docker部署skywalking

    使用docker部署skywalking Intro 之前在本地搭建过一次 skywalking + elasticsearch ,但是想要迁移到别的机器上使用就很麻烦了,于是 docker 就成了很 ...

  8. 【原创】运维基础之Docker(2)通过docker部署zookeeper nginx tomcat redis kibana/elasticsearch/logstash mysql kafka mesos/marathon

    通过docker可以从头开始构建集群,也可以将现有集群(配置以及数据)平滑的迁移到docker部署: 1 docker部署zookeeper # usermod -G docker zookeeper ...

  9. 使用docker部署filebeat和logstash

    想用filebeat读取项目的日志,然后发送logstash.logstash官网有相关的教程,但是docker部署的教程都太简洁了.自己折腾了半天,踩了不少坑,总算是将logstash和filebe ...

随机推荐

  1. docker工具之基本命令

    docker工具之基本命令 1.docker服务的启动.停止.重启 systemctl start docker #启动docker服务 systemctl daemon-reload #守护进程重启 ...

  2. Mybatis----resultMap类型详解

    Mybatis----resultMap类型详解 这篇文章主要给大家介绍了关于Mybatis中强大的resultMap功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mybatis具 ...

  3. YAPI windows 二次开发 树形结构 多层级结构 拖拽 数据导入 接口自动化测试

    什么是YAPI: 高效.易用.功能强大的API管理平台 http://yapi.demo.qunar.com/ github: https://github.com/YMFE/yapi 可以去那里下载 ...

  4. IT兄弟连 HTML5教程 CSS3揭秘 CSS常见的样式属性和值4

    6  鼠标光标属性 在网页中默认的鼠标指针只有两种,一种是最普通的箭头,另一种是当移动到链接上时出现的“小手”.但现在越来越多的网页都使用了CSS鼠标指针技术,当将鼠标移动到链接上时,可以看到多种不同 ...

  5. C#Winform窗体利用单例子窗体传值父窗体

    简述:最近在做C#和HALCON编程,要用到单例的参数由子窗体改变父窗体的值.此例为简化版 1,点击系统设置 2,弹出子窗体,在其输入修改参数后点修改按钮 3,点击确定按钮后,关闭子窗体后,主窗体te ...

  6. session购物车中的移除功能部分(学生笔记)

    function onclick_remove(r) { if (confirm("确认删除么!此操作不可恢复")) { var out_momey = $(".out_ ...

  7. Winform中在使用VS+svn进行协同开发时添加引用时的相对路径和绝对路径的问题

    场景 使用Visual Studio 开发Winform程序,使用SVN进行项目版本管理. 在添加引用时,会出现在A电脑中添加了绝对路径的引用,在B电脑中就会出现找不到 并且将此引用标识为?的状态. ...

  8. Saltstack_实战指南01_系统规划

    1. 实战项目GitHub地址 之前<Saltstack_使用指南>详细讲解了saltstack的使用.那么从这节开始实战讲解,当然不会再像之前那样详细说明了.只是讲一些系统规划之类的信息 ...

  9. 用Docker运行Jenkins自动化构建.NET Core项目

    目标 当代码提交到GitHub后,自动生成构建项目并部署到服务器.接下来介绍一下如何在容器中运行Jenkins,并自动化构建GitHub上的项目,使用自动化构建来解放你的双手. 前置条件 一台已经安装 ...

  10. 初级模拟电路:3-10 BJT实现开关电路

    回到目录 1. 基本用法 用BJT晶体管实现开关功能是经常会用到的实用电路.和逻辑门电路类似,当BJT用于开关电路时,也只工作于饱和区和截止区. 开关功能的实现电路如下图所示,负载可以是发光二极管.电 ...