前言
乾貨,不囉嗦,直奔主題!
1、拉取Zookeeper鏡像
docker pull wurstmeister/zookeeper
註解:pull,從docker倉庫拉取一個鏡像。
後面的參數格式:鏡像名稱:版本。:版本,為可選參數。不寫的話,就是拉取默認版本latest。
2、拉取Kafka鏡像
docker pull wurstmeister/kafka
查看已下載的鏡像
docker images -a
註解:images,鏡像列表。
-a 或 --all,為可選參數。顯示所有鏡像,不加該參數,默認是隱藏過程鏡像的。
部署單點Zookeeper和單點Kafka,為後面的集群搭建做基礎
1、創建Zookeeper單點容器
註解:run,創建新容器,併為容器配置一些參數。
- -t,在容器內部創建一個tty或者偽終端。
- -i,允許主機終端按照容器內部的標準與其交互。
- -d,後臺運行容器並打印容器名稱。
- --name,容器名稱。
- -p,端口映射,參數格式為:主機物理端口:容器內部端口。
- 最後跟上的就是我們已經下載的鏡像。
2、創建Kafka單點容器
註解:
- -e,配置容器環境變量。
- --link,鏈接到另一個容器,參數格式為:目標容器名稱:在本容器內的別名。
這裡的環境變量設置,其實就是對即將創建的Kafka配置server.properties文件的初始化。
查看容器
docker ps -a
註解:ps,容器列表。
- -a 或 --all,為可選參數。顯示所有容器,不加該參數,默認僅顯示運行中的容器。
3、測試
進入Kafka容器
註釋:exec,在運行中的容器中,執行命令。
- 跟上容器名稱,也就是創建容器時 --name 參數定義的名稱。
- 如果沒有定義,也可以用ID。
- 再跟上要執行的命令。
消息生產和消息消費測試
部署Zookeeper集群和Kafka集群
注意:這裡沒有使用 docker-compose,全部是手動搭建的方式。這樣可以幫助我們熟悉使用docker,並瞭解Zookeeper和Kafka集群配置。
我們準備搭建3個Zookeeper節點和3個Kafka節點,集群不再適合使用link的方式進行容器間的通信。我們使用自定義網絡,然後把容器加入自定義網絡中。
1、創建自定義網絡
查看網絡
docker network ls
註釋:network,管理網絡。
- ls,網絡列表
創建網絡
再次查看網絡
2、創建Zookeeper集群
1、創建Zookeeper節點1
註釋:
-v,將宿守主機文件掛載到容器內部,參數格式:主機文件或目錄:容器內文件或目錄。當然了,既然是把主機文件掛載到容器內部,首先要先創建好主機的這些文件或目錄,比如最重要的 zoo.cfg 文件,還有myid文件。myid服務器節點編號。
zoo.cfg中的集群核心配置如下:
#server.服務器節點編號=主機名:心跳端口:選舉端口)
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
三個節點上述配置一致。只是myid文件內容記錄分別是1,2,3。
2、創建Zookeeper節點2
3、創建Zookeeper節點3
4、分別進入Zookeeper節點,查看zkServer運行狀態
領導者已經選舉成功,Zookeeper集群完成
3、創建Kafka集群
參數配置的含義,都已經有過解釋了,直接看三個節點配置吧
4、測試
這次測試,小編使用宿守主機上的kafka進行測試。鏈接Kafka容器,用的是主機與容器的端口映射。
結束
本文涵蓋的知識點:
- Docker常用命令的介紹
- Docker常用配置參數的說明
- Docker實現主機與容器通信,端口映射
- Docker容器間通信,使用了link方式和network方式
- Docker自定義網絡
- Docker容器掛載文件,-v
- Docker容器環境變量設置,-e
- Zookeeper單點部署和集群部署
- Kafka單點部署和集群部署
- Kafka命令方式生產消息和消費消息
您的關注與點贊,就是對小編最大的鼓勵和支持。小編會繼續努力,為大家帶來乾貨知識。