Compose
Docker Compose 是一个基于命令行的工具,用于定义和管理多容器应用程序的部署。它使用 YAML 文件来描述应用程序的组件、服务依赖关系和配置信息。
通过编写 docker-compose.yml 文件,您可以在其中定义多个服务,并指定每个服务所需的镜像、环境变量、网络设置等。这样,您可以将整个应用程序的各个组件统一地定义在一个文件中,方便管理和维护。
Docker Compose 提供了一组命令行工具,使您能够轻松地启动、停止和重启应用程序的服务。例如,使用 docker-compose up 命令,可以根据配置文件启动所有服务。而使用 docker-compose down 命令,则可以停止并删除已启动的容器。
另外,Docker Compose 还支持自定义网络和卷,以满足多容器应用程序的网络通信和数据持久化需求。您可以在配置文件中定义新的网络,并将服务连接到该网络上,实现容器之间的相互通信。同时,您也可以将主机文件系统中的目录与容器内的目录进行映射,以实现数据在容器之间的共享和持久化存储。
使用 Docker Compose,您可以更加高效地管理和部署复杂的多容器应用程序。它提供了一种可扩展和可重复的方式,使得开发、测试和生产环境之间的部署过程更加简化和一致。通过定义整个应用程序的架构和配置信息,您可以实现快速部署、自动化管理和可靠性保证。
我们在使用es的时候,总是没有好用的环境,可以使用docker部署一个集群,用来验证和测试,方便快捷,简单易食用
准备集群
-
准备配置目录及文件
-
新建 E:\dockerFile\elasticsearch\01、02、03 文件夹
-
分别在其下建 data、plugins 文件夹
-
分别在其下建文件 elasticsearch.yml
-
elasticsearch.yml 文件内容分别为:
-
01
# 集群名称 cluster.name: es-cluster # 节点名称 node.name: es-node-1 # 绑定host,0.0.0.0代表当前节点的ip network.host: 0.0.0.0 # 表示这个节点是否可以充当主节点 node.master: true # 是否充当数据节点 node.data: true # 所有主从节点 discovery.seed_hosts: ["es-master", "es-slave1", "es-slave2"] # 这个参数决定了在选主过程中需要 有多少个节点通信 预防脑裂 N/2+1 discovery.zen.minimum_master_nodes: 3 #初始化主节点 cluster.initial_master_nodes: es-node-1 # 单节点上可以开启的ES存储实例的个数,没配置的话会报一个错误 node.max_local_storage_nodes: 3 -
02
cluster.name: es-cluster node.name: es-node-2 network.host: 0.0.0.0 node.master: true node.data: true discovery.seed_hosts: ["es-master", "es-slave1", "es-slave2"] discovery.zen.minimum_master_nodes: 3 cluster.initial_master_nodes: es-node-1 node.max_local_storage_nodes: 3 -
03
cluster.name: es-cluster node.name: es-node-3 network.host: 0.0.0.0 node.master: true node.data: true discovery.seed_hosts: ["es-master", "es-slave1", "es-slave2"] discovery.zen.minimum_master_nodes: 3 cluster.initial_master_nodes: es-node-1 node.max_local_storage_nodes: 3
-
-
-
新建一个文件,
docker-compose.ymlversion: '3' networks: es-net: external: true services: elasticsearch1: image: elasticsearch:7.6.2 container_name: es-master volumes: - E:\dockerFile\elasticsearch\01\data:/usr/share/elasticsearch/data - E:\dockerFile\elasticsearch\01\plugins:/usr/share/elasticsearch/plugins - E:\dockerFile\elasticsearch\01\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml networks: - es-net environment: - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 ports: - '19210:9200' - '19310:9300' privileged: true elasticsearch2: image: elasticsearch:7.6.2 container_name: es-slave1 volumes: - E:\dockerFile\elasticsearch\02\data:/usr/share/elasticsearch/data - E:\dockerFile\elasticsearch\02\plugins:/usr/share/elasticsearch/plugins - E:\dockerFile\elasticsearch\02\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml networks: - es-net environment: - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 ports: - '19220:9200' - '19320:9300' privileged: true elasticsearch3: image: elasticsearch:7.6.2 container_name: es-slave2 volumes: - E:\dockerFile\elasticsearch\03\data:/usr/share/elasticsearch/data - E:\dockerFile\elasticsearch\03\plugins:/usr/share/elasticsearch/plugins - E:\dockerFile\elasticsearch\03\elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml networks: - es-net environment: - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 ports: - '19230:9200' - '19330:9300' privileged: true -
创建网络
es-netdocker network create es-net -
windows 上解决:vm.max_map_count 65530 is too low
$ wsl -d docker-desktop $ sysctl -w vm.max_map_count=262144 -
启动容器
docker compose up -d -
访问页面