Linux Ubuntu上使用Docker安装kafka并成功运行
系统环境:Linux Ubuntu 22.04.5 LTS x64-based PC
以下是使用 Docker 安装 Kafka 的详细步骤:
1. 确保已安装 Docker
在开始之前,请确保您已经安装了 Docker。您可以在命令行中输入以下命令来检查 Docker 是否已成功安装:
docker version
如果尚未安装,请先安装 Docker。
2. 拉取 Zookeeper 和 Kafka 镜像
Kafka 依赖于 Zookeeper 来管理集群元数据,因此需要先安装 Zookeeper。运行以下命令拉取 Zookeeper 和 Kafka 的 Docker 镜像:
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
3. 创建 Zookeeper 容器
运行以下命令创建并启动 Zookeeper 容器:
docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper
4. 创建 Kafka 容器
创建 Kafka 容器时,需要指定与 Zookeeper 的连接以及 Kafka 的监听地址等参数。运行以下命令:
docker run -d --name kafka \
--publish 9092:9092 \
--link zookeeper \
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://124.71.60.238:9092 \
--env KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT \
--env KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT \
--env KAFKA_BROKER_ID=0 \
--volume /etc/localtime:/etc/localtime \
wurstmeister/kafka
--link zookeeper
:将 Kafka 容器与 Zookeeper 容器连接。KAFKA_ZOOKEEPER_CONNECT
:指定 Zookeeper 的地址。KAFKA_ADVERTISED_LISTENERS
:指定 Kafka 的监听地址,暴露给外网的监听地址。KAFKA_LISTENERS
:指定 Kafka 的监听地址。
通过docker ps -a查看两个组件的运行情况,STATUS是UP,说明运行成功。如果STATUS是exit,说明启动失败。
如果启动失败,通过docker logs kafka查看错误日志。
5. 验证 Kafka 服务
进入 Kafka 容器的命令行:
docker exec -it kafka /bin/bash
然后在容器内运行以下命令创建一个主题并测试生产者和消费者:
# 创建主题
kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
# 启动生产者
kafka-console-producer.sh --broker-list localhost:9092 --topic test
# 在另一个终端启动消费者
kafka-console-consumer.sh --topic test --bootstrap-server localhost:9092 --group test-group-1
如果生产者和消费者能够正常通信,则说明 Kafka 安装成功。
如果不能正常通信,可能是网络问题。其它,确认配置无误后,尝试删除zookeeper、kafka,再重新运行起来。
6. 使用 Docker Compose(可选)
如果您希望更方便地管理 Kafka 和 Zookeeper 的启动和停止,可以使用 Docker Compose。创建一个 docker-compose.yml
文件,内容如下:
version: '3.8'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
depends_on:
- zookeeper
然后运行以下命令启动 Kafka 和 Zookeeper:
docker-compose up -d
注意事项
- 如果 Kafka 无法连接 Zookeeper,请检查
/etc/hosts
文件,确保 Zookeeper 的主机名映射正确。 - 在生产环境中,建议使用 Kafka 的 KRaft 模式(无 Zookeeper),并通过 Docker Compose 或 Kubernetes 部署。
其他常用命令
docker ps -a 查看docker管理容器
docker start zookeeper:通过容器名启动zookeeper
docker stop zookeeper
docker start kafka
docker stop kafka
docker rm kafka
docker inspect kafka:查看配置
docker logs kafka:查看日志
docker logs -f kafka:查看实时日志
docker exec -it kafka /bin/bash:进入kafka命令行
kafka-topics.sh --list --bootstrap-server localhost:9092 :查询所有已创建的主题