『十倍程序员』Docker部署kafka+zookeeper

「这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战」。

点赞再看,养成习惯👏👏

前言

Hello 大家好,我是l拉不拉米,今天的『十倍程序员』系列给大家分享Docker部署kafka+zookeeper的实战。

环境准备

文章使用 Window 系统 + Docker Desktop 演示,假设您有一定的docker基础。

Docker Desktop

Docker Desktop为我们学习Docker提供了一套完整的一个桌面环境,可以为软件开发提供很多便利。

Docker Desktop包含了Docker Engine, Docker CLI client, Docker Compose, Docker Machine和Kitematic。

先去 Docker官网 下载 Docker Desktop 并安装。

docker-compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

compose命令

命令 解释
docker-compose up 启动所有容器
docker-compose up -d 后台启动并运行所有容器
docker-compose up –no-recreate -d 不重新创建已经停止的容器
docker-compose up -d test2 只启动test2这个容器
docker-compose stop 停止容器
docker-compose start 启动容器
docker-compose down 停止并销毁容器

由于安装Docker Desktop时会默认安装 docker-compose,所以我们并不需要特意去安装compose。

编写docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
yml复制代码version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
volumes:
- ./data:/data
ports:
- "2181:2181"

kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_MESSAGE_MAX_BYTES: 2000000
KAFKA_CREATE_TOPICS: "Topic1:1:3,Topic2:1:1:compact"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- ./kafka-logs:/kafka
- /var/run/docker.sock:/var/run/docker.sock

kafka-manager:
image: sheepkiller/kafka-manager
ports:
- 9020:9000
environment:
ZK_HOSTS: zookeeper:2181

将docker-compose.yml放到任意文件目录下。

window终端执行Docker Compose命令

启动window终端,进入到docker-compose.yml 所在的文件目录

服务打包

1
2
3
arduino复制代码[root@rameo kafka] # docker-compose build
zookeeper uses an image, skipping
kafka uses an image, skipping

启动服务

1
2
3
bash复制代码[root@rameo kafka]# docker-compose up -d
Starting kafka_kafka_1 ... done
Starting kafka_zookeeper_1 ... done

此时已经启动成功,我们可以通过Docker Desktop桌面工具看拉取的镜像

image.png

和启动的容器

image.png

总结

通过这个例子,我们可以非常高效的实现kafka集群+zookeeper集群的搭建,主要得以与Docker Desktop工具集成了很多docker能力和docker-compose编排处理的能力,我们不需要每一个镜像拉取、运行、配置一次,而是全都由统一的docker-compose.yml集中管理,一次运行。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%