目录
1. 创建目录结构
目录结构如下:
# 个人开发环境 目录
~/dev/
└── docker/ # docker-compose.yml 相关配置
# 挂载目录
/data
├── zookeeper/
│ ├── data/ # /var/lib/zookeeper/data 的挂载目录
│ ├── conf/ # /etc/zookeeper/conf 的挂载目录
│ └── datalog/ # 数据日志
├── kafka/
│ ├── data/ # /var/lib/kafka/data 的挂载目录
│ └── conf/ # /etc/kafka 的挂载目录
└── kafka-ui/
├── conf/ # /kafka-ui/conf 的挂载目录
└── logs/ # /kafka-ui/logs 的挂载目录
命令如下:
# 以app用户登录执行
mkdir -p ~/dev/docker
# 以root用户登录执行
sudo mkdir -p /data/zookeeper/{data,conf,datalog} /data/kafka/{data,conf} /data/kafka-ui/{conf,logs}
sudo chown -R 1000:1000 /data/zookeeper /data/kafka /data/kafka-ui
# 权限 700 表示:所有者(app):可读、可写、可执行;用户组和其他人:无权限
sudo chmod -R 700 /data/zookeeper /data/kafka /data/kafka-ui
# 创建配置文件
cat > /data/zookeeper/conf/zoo.cfg << EOF
# 基础配置
dataDir=/var/lib/zookeeper/data
clientPort=2181
tickTime=2000
initLimit=5
syncLimit=5
maxClientCnxns=100
# 自动清理快照和事务日志
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
# 如果是集群模式,添加以下配置
# server.1=zk1:2888:3888
# server.2=zk2:2888:3888
# server.3=zk3:2888:3888
EOF
# 创建配置文件
cat > /data/kafka/conf/server.properties << EOF
# 消息大小相关配置
message.max.bytes=268435456
replica.fetch.max.bytes=268435456
max.request.size=268435456
# 网络相关配置
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=268435456
EOF
注意:Confluent的Zookeeper镜像(confluentinc/cp-zookeeper)是预先配置为使用名为appuser的非root用户(UID 1000),在许多Linux发行版中,第一个创建的常规用户通常被分配UID 1000,这种数值上的巧合并不意味着它们是"同一个用户"
效果图如下,图中“app:app”后续已用“1000:1000”替换执行:

2. 创建 Docker Compose 配置
在目录 /dev/docker 下创建自定义名称文件 kafka-docker-compose.yml,内容如下:
version: '3'
networks:
kafka_net:
driver: bridge
services:
zookeeper:
image: zookeeper:3.8.1
container_name: zookeeper
networks:
- kafka_net
ports:
- "2181:2181"
environment:
TZ: "Asia/Shanghai"
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_SERVER_ID: 1
ZOOKEEPER_CLIENT_PORT_ADDRESS: 0.0.0.0 # 可选,确保监听所有接口
ZOOKEEPER_MAX_CLIENT_CNXNS: 100
ZOOKEEPER_SYNC_LIMIT: 5 # 同步超时 10 秒(5 * 2000ms)
ZOO_DATA_DIR: /data
ZOO_DATA_LOG_DIR: /datalog
ulimits:
nofile: 65535
deploy:
resources:
limits:
memory: 4G
volumes:
- /data/zookeeper/data:/var/lib/zookeeper/data # 目录挂载到 /data/zookeeper/data
- /data/zookeeper/conf:/etc/zookeeper/conf # 目录挂载到 /data/zookeeper/conf
- /data/zookeeper/conf/zoo.cfg:/conf/zoo.cfg # 替换原有配置挂载
- /data/zookeeper/data:/data
- /data/zookeeper/datalog:/datalog
restart: unless-stopped
kafka:
image: bitnami/kafka:3.7.0
container_name: kafka
networks:
- kafka_net
depends_on:
- zookeeper
ports:
- "9092:9092"
- "9093:9093"
- "29092:29092"
environment:
TZ: "Asia/Shanghai"
KAFKA_BROKER_ID: 1
KAFKA_LISTENERS: INTERNAL://0.0.0.0:29092,EXTERNAL://0.0.0.0:9092,EXTERN

最低0.47元/天 解锁文章
788

被折叠的 条评论
为什么被折叠?



