使用'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.datapath.logscluster.namenode.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" ...