1,下載鏡像
首先我們分別執行如下兩個命令將 wurstmeister/zookeeper 和 wurstmeister/kafka 這兩個鏡像下載下來。
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
2,啟動容器
(1)執行如下命令啟動 ZooKeeper 容器:
docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper
(2)接着執行如下命令啟動 Kafka 容器:
注意:192.168.60.133 改為實際宿主機器的 IP 地址,如果不這么設置,可能會導致在別的機器上訪問不到 kafka。
docker run -d --name kafka -p 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=192.168.60.133:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.60.133 --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka
二、執行命令p
1,進入容器
(1)容器啟動后執行如下命令進入 kafka 容器:
docker exec -it kafka /bin/bash
(2)如果要執行命令我們可以入 kafka 默認目錄 /opt/kafka 后執行,也可以像下面一樣在容器外面通過 docker exec 命令執行。
2,創建查看 Topic
(1)我們執行如下命令可以創建一個名為 test 的 Topic,該 Topic 包含一個分區和一個 Replica。
docker exec kafka kafka-topics.sh --create --zookeeper 192.168.60.133:2181 --replication-factor 1 --partitions 1 --topic test
(2)創建后可以執行如下命令查看當前的 Topics:
docker exec kafka kafka-topics.sh --list --zookeeper 192.168.60.133:2181
3,創建消息
注意:如果事先沒有使用 kafka-topics 命令來手工創建 Topic,直接使用下面的內容進行消息創建時也會自動創建 Topics。
(1)首先創建消息生產者。執行如下命令啟動 Kafka 基於命令行的消息生產客戶端,啟動后可以直接在控制台中輸入消息來發送,控制台中的每一行數據都會被視為一條消息來發送。
注意:此時我們可以嘗試輸入幾行消息,由於此時並沒有消費者,所以這些輸入的消息都會被阻塞在名為 test 的 Topics 中,直到有消費者將其消費掉。
docker exec -it kafka kafka-console-producer.sh --broker-list 192.168.60.133:9092 --topic test
(2)接着創建消息消費者。我們打開另一個命令窗口執行如下執行命令啟動 Kafka 基於命令行的消息消費客戶端,啟動之后,馬上可以在控制台中看到輸出了之前我們在消息生產客戶端中發送的消息。
docker exec -it kafka kafka-console-consumer.sh --bootstrap-server 192.168.60.133:9092 --topic test --from-beginning