docker 安装 elasticsearch
1. 搜索镜像
[root@izwz91quxhnlk6j7a211 ~]# docker search elasticsearch
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/elasticsearch Elasticsearch is a powerful open source se... 3588 [OK]
docker.io docker.io/kibana Kibana gives shape to any kind of data — s... 1461 [OK]
docker.io docker.io/nshou/elasticsearch-kibana Elasticsearch-6.5.4 Kibana-6.5.4 97 [OK]
docker.io docker.io/itzg/elasticsearch Provides an easily configurable Elasticsea... 67 [OK]
docker.io docker.io/elastichq/elasticsearch-hq Official Docker image for ElasticHQ: Elast... 28 [OK]
docker.io docker.io/kubernetes/fluentd-elasticsearch An image that ingests Docker container log... 25
docker.io docker.io/lmenezes/elasticsearch-kopf elasticsearch kopf 18 [OK]
docker.io docker.io/bitnami/elasticsearch Bitnami Docker Image for Elasticsearch 16 [OK]
docker.io docker.io/elastic/elasticsearch The Elasticsearch Docker image maintained ... 15
docker.io docker.io/taskrabbit/elasticsearch-dump Import and export tools for elasticsearch 15 [OK]
docker.io docker.io/esystemstech/elasticsearch Debian based Elasticsearch packing for Lif... 14
docker.io docker.io/monsantoco/elasticsearch ElasticSearch Docker image 11 [OK]
docker.io docker.io/mesoscloud/elasticsearch [UNMAINTAINED] Elasticsearch 9 [OK]
docker.io docker.io/blacktop/elasticsearch Alpine Linux based Elasticsearch Docker Image 8 [OK]
docker.io docker.io/justwatch/elasticsearch_exporter Elasticsearch stats exporter for Prometheus 8
docker.io docker.io/centerforopenscience/elasticsearch Elasticsearch 4 [OK]
docker.io docker.io/barchart/elasticsearch-aws Elasticsearch AWS node 3
docker.io docker.io/forkdelta/fluentd-elasticsearch fluent/fluentd with fluent-plugin-elastics... 1 [OK]
docker.io docker.io/jetstack/elasticsearch-pet An elasticsearch image for kubernetes PetSets 1 [OK]
docker.io docker.io/phenompeople/elasticsearch Elasticsearch is a powerful open source se... 1 [OK]
docker.io docker.io/18fgsa/elasticsearch Built from https://github.com/docker-libra... 0
docker.io docker.io/axway/elasticsearch-docker-beat "Beat" extension to read logs of container... 0 [OK]
docker.io docker.io/driveclutch/infra-elasticsearch-aws Elasticsearch Docker for use in AWS 0 [OK]
docker.io docker.io/igneoussystems/base-elasticsearch A base image containing 3p tools for elast... 0
docker.io docker.io/wreulicke/elasticsearch elasticsearch 0 [OK]
2.拉取镜像
[root@izwz91quxhnlk6j7a211 ~]# docker pull docker.io/elasticsearch
[root@izwz91quxhnlk6j7a211 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/elasticsearch latest 5acf0e8da90b 7 months ago 486 MB
3.创建Docker自定义网络
创建自定义网络,是为了能指定IP.
容器创建后默认是使用bridge网络类型,但默认的bridge网络类型不能指定IP,否则会出现如下错误:
/usr/bin/docker-current: Error response from daemon: User specified IP address is supported on user defined networks only.
[root@izwz91quxhnlk6j7a211 ~]# docker network create --subnet=172.18.0.0/24 mynetwork
[root@izwz91quxhnlk6j7a211 ~]# docker network ls
5fbe11c6a146 bridge bridge local
6d5f43379fd8 host host local
0cb4c88e4188 mynetwork bridge local
fc9ff80e1d4e none null local
4.修改配置sysctl.conf
修改进程能拥有的最多内存区域,否则启动容器会出现如下错误
bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
vim打开sysctl.conf
vim /etc/sysctl.conf
加入配置
vm.max_map_count=262144
启用配置
sysctl -p
5.创建conf目录以及配置文件
[root@izwz91quxhnlk6j7a211 elasticsearc]#mkdir conf
es1.yml
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
http.port: 9200
network.publish_host: 172.18.0.11
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["172.18.0.11:9300","172.18.0.12:9300"]
es2.yml
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
http.port: 9200
network.publish_host: 172.18.0.12
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["172.18.0.11:9300","172.18.0.12:9300"]
6.创建data1,data2分别挂载两个节点的目录
[root@izwz91quxhnlk6j7a211 elasticsearc]#mkdir data1
[root@izwz91quxhnlk6j7a211 elasticsearc]#mkdir data2
[root@izwz91quxhnlk6j7a211 elasticsearch]# ls
conf data1 data2
7.运行容器
-e ES_JAVA_OPTS="-Xms256m -Xmx256m"
这个参数是是由于/etc/elasticsearch/jvm.options默认JVM最大最小内存为2G
-v 参数是挂载配置到容器中
--network mynetwork --ip 172.18.0.11
参数是指定网络为自定义的网络mynetwork,并且IP是172.18.0.11
es1
[root@izwz91quxhnlk6j7a211 elasticsearch]# docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 19200:9200 -p 19300:9300 -v ~/elasticsearch/conf/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v ~/elasticsearch/data1:/usr/share/elasticsearch/data --name ES01 --network mynetwork --ip 172.18.0.11 docker.io/elasticsearch
验证es1是否搭建成功
[root@izwz91quxhnlk6j7a211 ~]# curl 127.0.0.1:19200
{
"name" : "es-node1",
"cluster_name" : "elasticsearch-cluster",
"cluster_uuid" : "BbagaeEiSRSqo1WddBhScA",
"version" : {
"number" : "5.6.12",
"build_hash" : "cfe3d9f",
"build_date" : "2018-09-10T20:12:43.732Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}
es2
[root@izwz91quxhnlk6j7a211 elasticsearch]# docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 29200:9200 -p 29300:9300 -v ~/elasticsearch/conf/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v ~/elasticsearch/data2:/usr/share/elasticsearch/data --name ES02 --network mynetwork --ip 172.18.0.12 docker.io/elasticsearch
验证es2是否搭建成功
[root@izwz91quxhnlk6j7a211 ~]# curl 127.0.0.1:29200
{
"name" : "es-node2",
"cluster_name" : "elasticsearch-cluster",
"cluster_uuid" : "BbagaeEiSRSqo1WddBhScA",
"version" : {
"number" : "5.6.12",
"build_hash" : "cfe3d9f",
"build_date" : "2018-09-10T20:12:43.732Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}
8.验证是否搭建成功
[root@izwz91quxhnlk6j7a211ksz ~]# curl 127.0.0.1:19200/_cat/nodes?pretty
172.18.0.12 30 96 9 0.21 0.20 0.12 mdi - es-node2
172.18.0.11 30 96 8 0.21 0.20 0.12 mdi * es-node1
9.docker安装elasticsearch-head
elasticsearch的客户端工具,方便管理elasticsearch
[root@izwz91quxhnlk6j7a211ksz ~]# docker pull mobz/elasticsearch-head:5
[root@izwz91quxhnlk6j7a211ksz ~]# docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5 --name es-head --network mynetwork --ip 172.18.0.10