我在Windows 10上将Docker Desktop与linux容器一起使用,并想通过docker compose文件启动最新版本的elasticsearch和kibana容器。
使用某些旧版本(如6.2.4)时,一切正常。
这是6.2.4的工作docker-compose.yml文件。
version: '3.1' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4 container_name: elasticsearch ports: - "9200:9200" volumes: - elasticsearch-data:/usr/share/elasticsearch/data networks: - docker-network kibana: image: docker.elastic.co/kibana/kibana:6.2.4 container_name: kibana ports: - "5601:5601" depends_on: - elasticsearch networks: - docker-network networks: docker-network: driver: bridge volumes: elasticsearch-data:
我删除了所有已安装的Docker容器,并通过将6.2.4更改为7.0.1修改了docker- compose.yml文件。通过启动新的compose文件,一切看起来都很好,即可启动elasticsearch和kibana容器。但是几秒钟后,elasticsearch容器退出了(kibana容器正在运行)。我重新启动了所有程序,将终端连接到elasticsearch容器,并看到以下错误消息:
... ERROR: [1] bootstrap checks failed [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured ...
为了使Elasticsearch 7.0.1正常工作,必须在docker-compose.yml文件中进行哪些更改?
进行一些更改对我有用-
cluster.initial_master_nodes在compose中添加到elasticsearch服务中-
cluster.initial_master_nodes
environment:
vm.max_map_count 在Linux机器上,内核设置至少需要设置为262144-
vm.max_map_count
$ sudo sysctl -w vm.max_map_count=262144
对于开发模式,您还可以使用以下设置-
environment: - discovery.type=single-node
正在为我撰写文件-
version: '2.2' services: es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.0.1 container_name: es01 environment: - cluster.initial_master_nodes=es01 ulimits: memlock: soft: -1 hard: -1 ports: - 9200
对于生产模式,您必须考虑按照官方文档中的建议具有多个ES节点/容器
https://www.elastic.co/guide/zh- CN/elasticsearch/reference/7.0/docker.html#docker-cli-run-prod- mode