docker 添加端口映射_苟且偷生的程序猿没法摸鱼了,从docker搭建elasticsearch集群开始学习...
最近刚换了公司,然后公司刚好使用的docker。而本人作为一个石锤的搬砖员,之前只知道搬砖们,对于这些东西确实没学过。今天在本地使用docker搭建elasticsearch集群,记录下过程,而且elasticsearch也是本人之前没学过的,最近会先学习elasticsearch使用,同时熟悉docker的使用。
docker安装
本人实在win10系统,所以安装的是Docker for Windows Installer
下载:链接:https://pan.baidu.com/s/13Gxzi-0gDqflnVRaUD0uGg 提取码:8xqh
关于docker的使用这里就不详细说了,因为网上确实有很多相关的文章。
准备工作
- docker拉取elasticsearch镜像image
对于拉下来的elasticsearch,我们需要检查它的版本,因为最新的7.x的版本配置和之前的集群配置不一样,所以我们需要看下是哪个版本
docker images # 列出所以已经拉取的镜像列表docker inspect 5acf0e8da90b # 通过inspect命令可以查看对应镜像的信息- 本地创建集群的data和logs目录,以及config目录,会挂载到docker容器,这样容器就能共享宿主机文件
安装elasticsearch集群
安装es集群,这里我们通过docker-compose的方式进行安装。
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
一般情况下Compose 使用的三个步骤:
1-使用 Dockerfile 定义应用程序的环境。(定制镜像) 2-使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。 3-最后,执行 docker-compose up 命令来启动并运行整个应用程序。- 创建自定义bridge网络
Docker容器之间需要通信,所以需要知道他们的ip是什么,并且是在es的配置文件中进行配置,说明需要固定的ip,每次启动都一样,不能是动态。所以这里就自定义网络,然后启动的时候对三个节点指定固定的ip。
创建自定义网络esnet
# 该命令进行创建一个自定义的network docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.0.1 esnet--driver bridge # 指定网络模式为bridge,默认会在主机上创建一个docker0虚拟网桥 --subnet=172.19.0.0/16 # --subnet选项创建自定义子网并覆盖默认值 --gateway=172.19.0.1 # 自定义网关这里需要注意:
我们在宿主机使用ping去查看能否ping同你自定义的网络ip,比如
ping 172.19.0.1如果ping不同,我们可以在宿主机使用route添加路由处理,win10系统添加route操作是需要管理员权限下才可以
route add -p 172.19.0.0 mask 255.255.0.0 10.0.75.2当然,你只要暴露了端口,宿主机ping不通容器的ip,也是可以访问的。
- 使用 docker-compose.yml 定义构成应用程序的服务
compose的yml文件我基本上已经注释了。上面设置了三个容器,基本上已经注释了,一看就明白。
networks 网络配置,文件中在三个容器的最前面已经配置了容器使用的自定义网络esnet,然后再容器内部配置ipv4_address固定容器ip
volumes 配置挂载,相当于docker中 -v 命令,使得容器能够共享宿主机的文件
ports 端口映射,前面是宿主机的端口映射到容器的端口
- es集群配置文件elasticsearch.yml
三个es节点的配置差不多,这里我之展示一个es01节点的配置
# ======================== Elasticsearch Configuration =========================# ---------------------------------- Cluster ----------------------------------- # 指定集群的名字 cluster.name: es-cluster # 手动指定可以成为 mater 的所有节点的 name 或者 ip,这些配置将会在第一次选举中进行计算,第一次启动全新的Elasticsearch集群时,会有一个集群引导 # cluster.initial_master_nodes: ["es01"]# ------------------------------------ Node ------------------------------------ # 给master起一个名称 node.name: es01 # 该节点就得到允许,可以成为master节点 node.master: true# ----------------------------------- Paths ------------------------------------ # 数据存储 path.data: /usr/share/elasticsearch/data# 日志存储 path.logs: /usr/share/elasticsearch/logs# ----------------------------------- Memory ----------------------------------- # 绑定的ip地址和默认端口号9200 network.host: 172.19.0.2# 端口9200 默认端口也是9200 http.port: 9200# TCP的默认监听端口,默认 9300,节点内部通信port transport.tcp.port: 9300# 允许跨域配置 http.cors.enabled: true http.cors.allow-origin: "*"# --------------------------------- Discovery ----------------------------------# es7.x 之后的集群配置方式# 写入候选主节点的设备地址,在开启服务后可以被选为主节点 #discovery.seed_hosts: ["172.19.0.2:9300", "172.19.0.3:9300", "172.19.0.4:9300"]# 指定master主节点,用来初始化主节点作为引导集群.启动全新的集群时需要此参数,再次重新启动时此参数可免 # cluster.initial_master_nodes: ["es01","es02","es03"]# es7.x 之前的集群配置方式# 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。 discovery.zen.ping.unicast.hosts: ["172.19.0.2:9300", "172.19.0.3:9300", "172.19.0.4:9300"]注意这里我们前面镜像的版本是5.6的,所以不可以使用7.x之后的一些配置否则es启动报错。
三个节点情况,使用esnet网络,网段是172.19.0.0/16
es01: ip=172.19.0.2 端口映射=9200:9200、9300:9300 es02: ip=172.19.0.3 端口映射=9400:9200、9500:9300 es03: ip=172.19.0.4 端口映射=9600:9200、9700:9300- 使用 docker Compose 命令构建和运行应用
以上命令需要在你的docker-compose.yml文件所在位置执行,否则会提示找不到docker-compose.yml命令等信息。
最后你可以通过docker/docker-compose命令查看容器信息
可以查看log,使用命令
dockers-compose logs 容器名称 docker logs 容器id最后通过映射端口访问一下:
总结
以上是生活随笔为你收集整理的docker 添加端口映射_苟且偷生的程序猿没法摸鱼了,从docker搭建elasticsearch集群开始学习...的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 的底层实现 ios_iOS 面试梳理
- 下一篇: 平面设计师okr_设计团队如何推进OKR