第一步:安装docker-compose
1.从github上下载docker-compose二进制文件安装
下载最新版的docker-compose文件
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
测试安装结果
docker-compose --version
docker-compose version 1.16.1, build 1719ceb
2-pip安装
sudo pip install docker-compose
第二步:用docker-compose部署kafka
docker-compose.yml如下:
复制进ubuntu的时候可能会换行错位,可以用nano替换vim
然后ctrl w + ctrl o
查找哪个docker镜像(分支)
docker search 镜像名
version: '2'
services:
zookeeper:
restart: always
image: wurstmeister/zookeeper #可以换用zookeeper分支,这里的image类似git的分支
volumes:
- $PWD/data:/data
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
restart: always
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 106.14.172.1 #一般配本机内网ip
KAFKA_MESSAGE_MAX_BYTES: 2000000
KAFKA_CREATE_TOPICS: "Topic1:1:3,Topic2:1:1:compact" #初始化的topic
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- $PWD/kafka-logs:/kafka
- /var/run/docker.sock:/var/run/docker.sock
kafka-manager:
image: sheepkiller/kafka-manager
restart: always
ports:
- 9020:9000
environment:
ZK_HOSTS: zookeeper:2181
参数说明:
- KAFKA_ADVERTISED_HOST_NAME:Docker宿主机IP(如果你要配置多个brokers,就不能设置为
localhost 或 127.0.0.1) - KAFKA_MESSAGE_MAX_BYTES:kafka(message.max.bytes)
会接收单个消息size的最大限制,默认值为1000000 , ≈1M - KAFKA_CREATE_TOPICS:初始创建的topics,可以不设置 环境变量./kafka-logs为防止容器销毁时消息数据丢失。
- 容器kafka-manager为yahoo出可视化kafka WEB管理平台。
在docker-compose.yml所在目录下执行:
# 启动:
$ docker-compose up -d
# 增加更多Broker:
$ docker-compose scale kafka=3
# 合并:
$ docker-compose up --scale kafka=3
在docker容器启动后想查看kafka版本,可以
docker exec -it 容器id bash
进入opt目录下查看
看完了上面想要的内容那么来思考下docker和docker-compose的区别把
docker是一个供开发和运维人员开发,测试,部署和运行应用的容器平台。这种用linux container部署应用的方式叫容器化。
compose是一个用于运行和管理多个容器化应用的工具。
我们可以列出下列几项来进行二者对比:
-
docker是自动化构建镜像,并启动镜像。 docker compose是自动化编排容器。
-
docker是基于Dockerfile得到images,启动的时候是一个单独的container
-
docker-compose是基于docker-compose.yml,通常启动的时候是一个服务,这个服务通常由多个container共同组成,并且端口,配置等由docker-compose定义好。
-
两者都需要安装,但是要使用docker-compose,必须已经安装docker