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 面试梳理
- 下一篇: thinkphp js带参数跳转页面