docker 添加端口映射_苟且偷生的程序猿没法摸鱼了,从docker搭建elasticsearch集群开始学习...
最近剛換了公司,然后公司剛好使用的docker。而本人作為一個(gè)石錘的搬磚員,之前只知道搬磚們,對(duì)于這些東西確實(shí)沒(méi)學(xué)過(guò)。今天在本地使用docker搭建elasticsearch集群,記錄下過(guò)程,而且elasticsearch也是本人之前沒(méi)學(xué)過(guò)的,最近會(huì)先學(xué)習(xí)elasticsearch使用,同時(shí)熟悉docker的使用。
docker安裝
本人實(shí)在win10系統(tǒng),所以安裝的是Docker for Windows Installer
下載:鏈接:https://pan.baidu.com/s/13Gxzi-0gDqflnVRaUD0uGg 提取碼:8xqh
關(guān)于docker的使用這里就不詳細(xì)說(shuō)了,因?yàn)榫W(wǎng)上確實(shí)有很多相關(guān)的文章。
準(zhǔn)備工作
- docker拉取elasticsearch鏡像image
對(duì)于拉下來(lái)的elasticsearch,我們需要檢查它的版本,因?yàn)樽钚碌?.x的版本配置和之前的集群配置不一樣,所以我們需要看下是哪個(gè)版本
docker images # 列出所以已經(jīng)拉取的鏡像列表docker inspect 5acf0e8da90b # 通過(guò)inspect命令可以查看對(duì)應(yīng)鏡像的信息- 本地創(chuàng)建集群的data和logs目錄,以及config目錄,會(huì)掛載到docker容器,這樣容器就能共享宿主機(jī)文件
安裝elasticsearch集群
安裝es集群,這里我們通過(guò)docker-compose的方式進(jìn)行安裝。
Compose 是用于定義和運(yùn)行多容器 Docker 應(yīng)用程序的工具。通過(guò) Compose,您可以使用 YML 文件來(lái)配置應(yīng)用程序需要的所有服務(wù)。然后,使用一個(gè)命令,就可以從 YML 文件配置中創(chuàng)建并啟動(dòng)所有服務(wù)。
一般情況下Compose 使用的三個(gè)步驟:
1-使用 Dockerfile 定義應(yīng)用程序的環(huán)境。(定制鏡像) 2-使用 docker-compose.yml 定義構(gòu)成應(yīng)用程序的服務(wù),這樣它們可以在隔離環(huán)境中一起運(yùn)行。 3-最后,執(zhí)行 docker-compose up 命令來(lái)啟動(dòng)并運(yùn)行整個(gè)應(yīng)用程序。- 創(chuàng)建自定義bridge網(wǎng)絡(luò)
Docker容器之間需要通信,所以需要知道他們的ip是什么,并且是在es的配置文件中進(jìn)行配置,說(shuō)明需要固定的ip,每次啟動(dòng)都一樣,不能是動(dòng)態(tài)。所以這里就自定義網(wǎng)絡(luò),然后啟動(dòng)的時(shí)候?qū)θ齻€(gè)節(jié)點(diǎn)指定固定的ip。
創(chuàng)建自定義網(wǎng)絡(luò)esnet
# 該命令進(jìn)行創(chuàng)建一個(gè)自定義的network docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.0.1 esnet--driver bridge # 指定網(wǎng)絡(luò)模式為bridge,默認(rèn)會(huì)在主機(jī)上創(chuàng)建一個(gè)docker0虛擬網(wǎng)橋 --subnet=172.19.0.0/16 # --subnet選項(xiàng)創(chuàng)建自定義子網(wǎng)并覆蓋默認(rèn)值 --gateway=172.19.0.1 # 自定義網(wǎng)關(guān)這里需要注意:
我們?cè)谒拗鳈C(jī)使用ping去查看能否ping同你自定義的網(wǎng)絡(luò)ip,比如
ping 172.19.0.1如果ping不同,我們可以在宿主機(jī)使用route添加路由處理,win10系統(tǒng)添加route操作是需要管理員權(quán)限下才可以
route add -p 172.19.0.0 mask 255.255.0.0 10.0.75.2當(dāng)然,你只要暴露了端口,宿主機(jī)ping不通容器的ip,也是可以訪問(wèn)的。
- 使用 docker-compose.yml 定義構(gòu)成應(yīng)用程序的服務(wù)
compose的yml文件我基本上已經(jīng)注釋了。上面設(shè)置了三個(gè)容器,基本上已經(jīng)注釋了,一看就明白。
networks 網(wǎng)絡(luò)配置,文件中在三個(gè)容器的最前面已經(jīng)配置了容器使用的自定義網(wǎng)絡(luò)esnet,然后再容器內(nèi)部配置ipv4_address固定容器ip
volumes 配置掛載,相當(dāng)于docker中 -v 命令,使得容器能夠共享宿主機(jī)的文件
ports 端口映射,前面是宿主機(jī)的端口映射到容器的端口
- es集群配置文件elasticsearch.yml
三個(gè)es節(jié)點(diǎn)的配置差不多,這里我之展示一個(gè)es01節(jié)點(diǎn)的配置
# ======================== Elasticsearch Configuration =========================# ---------------------------------- Cluster ----------------------------------- # 指定集群的名字 cluster.name: es-cluster # 手動(dòng)指定可以成為 mater 的所有節(jié)點(diǎn)的 name 或者 ip,這些配置將會(huì)在第一次選舉中進(jìn)行計(jì)算,第一次啟動(dòng)全新的Elasticsearch集群時(shí),會(huì)有一個(gè)集群引導(dǎo) # cluster.initial_master_nodes: ["es01"]# ------------------------------------ Node ------------------------------------ # 給master起一個(gè)名稱 node.name: es01 # 該節(jié)點(diǎn)就得到允許,可以成為master節(jié)點(diǎn) node.master: true# ----------------------------------- Paths ------------------------------------ # 數(shù)據(jù)存儲(chǔ) path.data: /usr/share/elasticsearch/data# 日志存儲(chǔ) path.logs: /usr/share/elasticsearch/logs# ----------------------------------- Memory ----------------------------------- # 綁定的ip地址和默認(rèn)端口號(hào)9200 network.host: 172.19.0.2# 端口9200 默認(rèn)端口也是9200 http.port: 9200# TCP的默認(rèn)監(jiān)聽(tīng)端口,默認(rèn) 9300,節(jié)點(diǎn)內(nèi)部通信port transport.tcp.port: 9300# 允許跨域配置 http.cors.enabled: true http.cors.allow-origin: "*"# --------------------------------- Discovery ----------------------------------# es7.x 之后的集群配置方式# 寫入候選主節(jié)點(diǎn)的設(shè)備地址,在開(kāi)啟服務(wù)后可以被選為主節(jié)點(diǎn) #discovery.seed_hosts: ["172.19.0.2:9300", "172.19.0.3:9300", "172.19.0.4:9300"]# 指定master主節(jié)點(diǎn),用來(lái)初始化主節(jié)點(diǎn)作為引導(dǎo)集群.啟動(dòng)全新的集群時(shí)需要此參數(shù),再次重新啟動(dòng)時(shí)此參數(shù)可免 # cluster.initial_master_nodes: ["es01","es02","es03"]# es7.x 之前的集群配置方式# 設(shè)置集群中master節(jié)點(diǎn)的初始列表,可以通過(guò)這些節(jié)點(diǎn)來(lái)自動(dòng)發(fā)現(xiàn)新加入集群的節(jié)點(diǎn)。 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啟動(dòng)報(bào)錯(cuò)。
三個(gè)節(jié)點(diǎn)情況,使用esnet網(wǎng)絡(luò),網(wǎng)段是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 命令構(gòu)建和運(yùn)行應(yīng)用
以上命令需要在你的docker-compose.yml文件所在位置執(zhí)行,否則會(huì)提示找不到docker-compose.yml命令等信息。
最后你可以通過(guò)docker/docker-compose命令查看容器信息
可以查看log,使用命令
dockers-compose logs 容器名稱 docker logs 容器id最后通過(guò)映射端口訪問(wèn)一下:
總結(jié)
以上是生活随笔為你收集整理的docker 添加端口映射_苟且偷生的程序猿没法摸鱼了,从docker搭建elasticsearch集群开始学习...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 的底层实现 ios_iOS 面试梳理
- 下一篇: thinkphp js带参数跳转页面