3分钟docker快速安装体验kafka

142 阅读2分钟

本文介绍centos7环境下,通过 docker 安装 kafka 的步骤,让大家能快速体验下 kafka

安装docker

可按官方安装说明文档安装

docs.docker.com/engine/inst…

或者按以下步骤安装

1.卸载旧的docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.安装yum-utils package (会提供 yum-config-manager 应用程序) 和设置仓库

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.安装最新版docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4.或者安装指定版本

yum list docker-ce --showduplicates | sort -r
显示如下:
docker-ce.x86_64    3:24.0.0-1.el8    docker-ce-stable
docker-ce.x86_64    3:23.0.6-1.el8    docker-ce-stable
<...>
执行命令安装指定版本
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin
例如:
安装docker,版本号19.03.2
yum install docker-ce-19.03.2 docker-ce-cli-19.03.2 containerd.io docker-buildx-plugin docker-compose-plugin

5.启动docker

sudo systemctl start docker

6.校验是否成功启动

docker -v
或者
sudo docker run hello-world

7.配置开机自启动

sudo systemctl enable docker

8.配置镜像加速

方法一:
sudo mkdir -p /etc/docker
vim daemon.json
加入以下内容
{
   "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
加载配置和重启
sudo systemctl daemon-reload
sudo systemctl restart docker
​
方法二:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
​
查看镜像地址(找到Registry字段即是)
docker info

安装kafka

kafka测试环境推荐4g,生产环境推荐8g及以上

1.创建网络

docker network create kafka-net

2.安装zookeeper(kafka依赖于zookeeper)

docker run -d \
  --name zookeeper \
  --network kafka-net \
  -p 2181:2181 \
  -e ZOOKEEPER_CLIENT_PORT=2181 \
  wurstmeister/zookeeper

3.安装kafka,已经自带jdk

  • 获取hostname的值

    hostname -I | awk '{print $1}'
    
  • 安装kafka

    docker run -d \
      --name kafka \
      --network kafka-net \
      -p 9092:9092 \
      -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
      -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<HOST_IP>:9092 \
      -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
      -e KAFKA_AUTO_CREATE_TOPICS_ENABLE="true" \
      -e KAFKA_HEAP_OPTS="-Xmx512m -Xms256m" \
      wurstmeister/kafka
    

    其中<HOST_IP>替换为hostname -I | awk '{print $1}'命令的输出值

4.测试

  • 进入 Kafka 容器
docker exec -it kafka /bin/bash
  • 创建测试 Topic
cd /opt/kafka/bin
./kafka-topics.sh --create \
  --bootstrap-server localhost:9092 \
  --replication-factor 1 \
  --partitions 1 \
  --topic test-topic
  • 发送消息
./kafka-console-producer.sh \
  --broker-list localhost:9092 \
  --topic test-topic

执行以上命令后,输入任意文本后按 Ctrl+D 发送

  • 消费消息
./kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic test-topic \
  --from-beginning

其中,--from-beginning:表示可以消费消费者启动之前生产者发送的消息

大功告成!