使用'docker-compose'命令运行Elasticsearch,Logstash和Kibana
我将用以下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)Elasticsearchconfiguration参数存储在elasticsearch.yml
文件中,但我可以在哪里find该文件? 是否有可能直接在docker-compose.yml
文件中定义Elasticsearch参数,例如path.data
, path.logs
, cluster.name
, node.name
?
1) links参数允许通过其服务名称或别名访问链接的容器。 对于两个服务都join的任何dockernetworking来说,这是可能的。
如果您没有在服务的networking密钥下指定任何networking,服务将join泊坞窗默认networking(我认为的桥梁)。
您只需要指定一个networking名称,如果您希望您的服务join一定数量的特定dockernetworking。 然后,您可以再次定义顶级networking密钥(允许docker-compose创buildnetworking)或在Docker组合之外准备每个docker network create
2)您使用的图像是使用X-Pack构build的,如何更改密码如下所述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" }'
如果您不想将其作为手动设置后的步骤,则必须创build自己的派生docker图像。
3)使用elasticsearch.ymlconfiguration的configuration参数可以使用Elastic Search Docker文档中描述的环境variables来设置。 从文档中取得的示例:
... 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" ...