运行 使用 'docker-compose' 命令的 Elasticsearch、Logstash 和 Kibana

Run Elasticsearch, Logstash and Kibana with 'docker-compose' command

我将使用 docker-compose 命令和以下 docker-compose.yml 文件进入 运行 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) 我为 link 容器指定了 links 参数,但我还应该指定 networks 参数吗?它有什么用?

2) 如何更改 Elasticsearch、Logstash 和 Kibana 的默认用户名和密码?

3) Elasticsearch 配置参数存储在 elasticsearch.yml 文件中,但我在哪里可以找到该文件? 是否可以直接在docker-compose.yml文件中定义path.datapath.logscluster.namenode.name等Elasticsearch参数?

1) links 参数允许通过其服务名称或别名访问链接的容器。这对于两个服务都加入的任何 docker 网络都是可能的。

如果您没有在服务的 networks 键下指定任何网络,服务将加入 docker 默认网络(我认为是网桥)。

如果您希望您的服务加入(多个)特定的 docker 网络,则只需指定网络名称。然后,您可以再次在顶级 networks 键下定义(让 docker-compose 创建网络)或在 docker 之外准备每个 docker network create

2) 您使用的图像是使用 X-Pack 构建的,此处描述了如何更改密码X-Pack security 文档中的示例:

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"
}'

如果您不想将其作为手动 post 设置步骤执行,则必须创建您自己的派生 docker 图像。

3) 您将使用 elasticsearch.yml 配置的配置参数可以使用环境变量进行设置,如Elastic search docker documentation。示例取自文档:

...
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"
...