[英]Run Elasticsearch, Logstash and Kibana with 'docker-compose' command
我将使用带有以下docker-compose.yml
文件docker-compose.yml
docker-compose
命令运行ELK:
---
version: '2'
services:
kibana:
image: docker.elastic.co/kibana/kibana
links:
- elasticsearch
ports:
- 5601:5601
kibana:
image: docker.elastic.co/logstash/logstash
links:
- elasticsearch
ports:
- 5044:5044
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch
cap_add:
- IPC_LOCK
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
volumes:
esdata1:
driver: local
但是我有几个问题:
1)我指定了links
参数来链接容器,但我也应该指定networks
参数吗? 这有什么用途?
2)如何更改Elasticsearch,Logstash和Kibana的默认用户名和密码?
3)Elasticsearch配置参数存储在elasticsearch.yml
文件中,但是在哪里可以找到该文件? 是否可以直接在docker-compose.yml
文件中定义Elasticsearch参数,例如path.data
, path.logs
, cluster.name
, node.name
?
1) links参数允许通过其服务名称或别名访问链接的容器。 这对于两个服务都已加入的任何docker网络都是可能的。
如果您未在服务的网络密钥下指定任何网络,则服务将加入docker默认网络(我认为是网桥)。
如果您希望服务加入(一定数量)特定的Docker网络,则只需指定网络名称。 然后,您可以在顶级网络密钥下定义这些内容(通过docker-compose创建网络),也可以在docker外部进行准备,按docker network create
2)您正在使用的映像是X-Pack内置的,此处介绍了如何更改密码。X-Pack安全示例摘自文档:
curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/elastic/_password' -H "Content-Type: application/json" -d '{
"password" : "elasticpassword"
}'
curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/kibana/_password' -H "Content-Type: application/json" -d '{
"password" : "kibanapassword"
}'
curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/logstash_system/_password' -H "Content-Type: application/json" -d '{
"password" : "logstashpassword"
}'
如果您不希望在手动设置后执行此操作,则必须创建自己的派生Docker映像。
3)您可以使用环境变量来设置您要使用elasticsearch.yml配置的配置参数,如Elastic search docker文档中所述 。 来自文档的示例:
...
services:
elasticsearch1:
image: docker.elastic.co/elasticsearch/elasticsearch:5.3.0
container_name: elasticsearch1
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.