使用docker搭建elasticsearch和kibana

准备工作

创建docker network

创建一个docker network用于docker 应用间的互通。

1
docker network create elk

上面 elk 是创建网络的名称。

然后可以是用以下命令查看创建网络的信息

1
docker network inspect elk

创建elasticsearch应用

使用docker-compose来编排elasticsearch应用,其yml文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
container_name: elasticsearch
networks:
- default
- elk
ports:
- "9300:9300"
- "9200:9200"
environment:
- discovery.type=single-node
networks:
elk:
external: true

然后执行命令

1
docker-compose up

使用以下命令验证是否已正常启动es

1
curl 'http://localhost:9200/?pretty'

创建kibana应用

同样使用docker-compose来创建kibana应用,yml文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3'
services:
kibana:
image: docker.elastic.co/kibana/kibana:6.7.0
container_name: kibana
networks:
- default
- elk
ports:
- "5601:5601"
environment:
SERVER_NAME: localhost
SERVER_PORT: 5601
ELASTICSEARCH_HOSTS: http://172.20.0.2:9200
networks:
elk:
external: true

其中 ELASTICSEARCH_HOSTS 的地址是由 docker network 获得。

然后通过 docker-compose up 启动应用。

访问 http://localhost:5601 进入kibana页面。

额外

使用 docker network inspect elk 可查看当前网络信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  docker network inspect elk
[
{
"Name": "elk",
"Id": "a5435f367fbd68104c8f4cd52556933bf70bbd41afdea600598d29d233668583",
"Created": "2019-04-06T02:43:00.6431085Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.20.0.0/16",
"Gateway": "172.20.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"62aa6a65e845cf6cb1b0f5fa3a73483b9305eb65d07de33c6c6ace8008bf53b0": {
"Name": "elasticsearch",
"EndpointID": "267b8af789689db8d65b5f6f64b7b4da3dc418e39f02dc7f9d0c918c9f598169",
"MacAddress": "02:42:ac:14:00:02",
"IPv4Address": "172.20.0.2/16",
"IPv6Address": ""
},
"6774e69500f19b898406b856f1a0ad2a1bce0b22c18e786d5e1d2752b253b42d": {
"Name": "kibana",
"EndpointID": "c567c8230161b5dd8b2c6bf2d23261340d67e748c3f64fd630e3d5385cba32e0",
"MacAddress": "02:42:ac:14:00:03",
"IPv4Address": "172.20.0.3/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]

可以使用ping来测试互通是否成功

1
2
3
4
5
6
⇒  docker exec -it elasticsearch ping kibana
PING kibana (172.20.0.3) 56(84) bytes of data.
64 bytes from kibana.elk (172.20.0.3): icmp_seq=1 ttl=64 time=0.192 ms
64 bytes from kibana.elk (172.20.0.3): icmp_seq=2 ttl=64 time=0.167 ms
64 bytes from kibana.elk (172.20.0.3): icmp_seq=3 ttl=64 time=0.169 ms
64 bytes from kibana.elk (172.20.0.3): icmp_seq=4 ttl=64 time=0.128 ms

参考