文章目錄
- 1. 拉取鏡像
- 2. 運行
- 創建網絡
- 運行 ZooKeeper 容器
- 運行 Kafka 容器
- 3. 簡單的校驗
- 1. 檢查容器狀態
- 2. 檢查 ZooKeeper 日志
- 3. 檢查 Kafka 日志
- 4. 使用 Kafka 命令行工具檢查
- 5. 創建和刪除測試主題
1. 拉取鏡像
選擇一組兼容性好的版本。
docker pull bitnami/kafka:3.6.1
docker pull bitnami/zookeeper:3.8.2
2. 運行
創建網絡
首先,創建一個名為 kafka
的 Docker bridge 網絡:
docker network create kafka
運行 ZooKeeper 容器
然后,運行 ZooKeeper 容器并將其連接到 kafka
網絡:
docker run -d --name zookeeper --network kafka -e ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper:3.8.2
運行 Kafka 容器
最后,運行 Kafka 容器并將其連接到 kafka
網絡:
docker run -d --name kafka --network kafka -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -p 9092:9092 bitnami/kafka:3.6.1
這些命令將使 ZooKeeper 和 Kafka 容器在同一個 Docker 網絡中運行,并確保它們可以相互通信。
3. 簡單的校驗
要判斷 ZooKeeper 和 Kafka 容器是否正常運行,可以通過以下幾個步驟進行檢查:
1. 檢查容器狀態
首先,檢查 ZooKeeper 和 Kafka 容器是否正在運行:
docker ps
輸出應包含類似以下內容:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<zookeeper_id> bitnami/zookeeper:3.8.2 "/opt/bitnami/script…" <some_time_ago> Up <some_time> 2181/tcp zookeeper
<kafka_id> bitnami/kafka:3.6.1 "/opt/bitnami/script…" <some_time_ago> Up <some_time> 0.0.0.0:9092->9092/tcp, :::9092->9092/tcp kafka
2. 檢查 ZooKeeper 日志
查看 ZooKeeper 容器的日志,以確保它已成功啟動并正在運行:
docker logs zookeeper
日志中應包含類似以下內容:
INFO Started AdminServer on address 0.0.0.0, port 8080
INFO binding to port 0.0.0.0/0.0.0.0:2181
3. 檢查 Kafka 日志
查看 Kafka 容器的日志,以確保它已成功連接到 ZooKeeper 并正在運行:
docker logs kafka
日志中應包含類似以下內容:
INFO [KafkaServer id=1] started (kafka.server.KafkaServer)
INFO [ZooKeeperClient] Connected. (org.apache.zookeeper.ClientCnxn)
4. 使用 Kafka 命令行工具檢查
進入 Kafka 容器內部,并使用 Kafka 命令行工具檢查 Kafka 和 ZooKeeper 的狀態:
docker exec -it kafka /bin/bash# 列出 Kafka 主題
kafka-topics.sh --list --bootstrap-server kafka:9092
如果可以成功列出 Kafka 主題,則表示 Kafka 和 ZooKeeper 正常運行。
5. 創建和刪除測試主題
可以嘗試創建一個測試主題,并查看是否成功:
# 創建一個名為 test-topic 的主題
kafka-topics.sh --create --topic test-topic --partitions 1 --replication-factor 1 --bootstrap-server kafka:9092# 列出所有主題,確認 test-topic 是否存在
kafka-topics.sh --list --bootstrap-server kafka:9092# 刪除 test-topic 主題
kafka-topics.sh --delete --topic test-topic --bootstrap-server kafka:9092
通過以上步驟,可以確認 ZooKeeper 和 Kafka 容器是否正常運行并相互通信。