博客 > 术业专攻> 云计算> docker> docker学习笔记–制作kafka镜像 2019年08月29日 11:23:43
wget https://mirrors.cnnic.cn/apache/kafka/0.11.0.2/kafka_2.11-0.11.0.2.tgz
然后上传到服务器。
需要准备一个jdk镜像。
docker pull eryajf/jdk:1.8
创建一个目录,有如下内容。
[root@jenkins kafka]$ls
Dockerfile kafka.tar run.sh
其中kafka.tar
是在解压之后,重命名为kafka
,然后再次打包而成,这样方便后续操作。
查看两个文件的内容。
[root@jenkins kafka]$cat run.sh
#!/bin/bash
source /etc/profile
sed -i '34s/^#//g' /opt/kafka/config/server.properties
sed -i '63s/tmp/opt\/kafka/g' /opt/kafka/config/server.properties
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
sleep 3
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
服务通过run.sh
进行初始化,里边简单配置了一下kafka,然后启动。
[root@jenkins kafka]$cat Dockerfile
FROM eryajf/jdk:1.8
MAINTAINER eryajf
ENV LANG en_US.UTF-8
ADD kafka.tar /opt
ADD run.sh /
EXPOSE 9092
ENTRYPOINT [ "sh", "-c", "/run.sh" ]
[root@jenkins kafka]$docker build -t test .
Sending build context to Docker daemon 236.7 MB
Step 1/7 : FROM 192.168.112.69/public/jdk:1.8
---> 88d717766e50
Step 2/7 : MAINTAINER eryajf
---> Using cache
---> ce9a81c38f6c
Step 3/7 : ENV LANG en_US.UTF-8
---> Using cache
---> d8ed2ae6a64f
Step 4/7 : ADD kafka.tar /opt
---> 1e6337f7c14d
Removing intermediate container b1127716d99e
Step 5/7 : ADD run.sh /
---> 1ca96a5d1728
Removing intermediate container 4c5750914f16
Step 6/7 : EXPOSE 9092
---> Running in a62aca3a277d
---> ce25e74f2acb
Removing intermediate container a62aca3a277d
Step 7/7 : ENTRYPOINT sh -c /run.sh
---> Running in 77536f76e370
---> 9d368303d96e
Removing intermediate container 77536f76e370
Successfully built 9d368303d96e
启动一下刚刚构建的镜像。
[root@jenkins kafka]$docker run -itd -p 9092:9092 --name aa test
c49f55f91edf1c6ecdf2c37d842f250a562a55df164a51571cfc71747f330e13
进入镜像创建消息验证。
[root@jenkins kafka]$docker exec -it aa sh
sh-4.2#cd opt/kafka/bin
sh-4.2# ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Created topic "test".
sh-4.2# ./kafka-topics.sh --list --zookeeper localhost:2181
test
sh-4.2# ./kafka-console-producer.sh --broker-list localhost:9092 --topic test
>hello world
>hello eryajf
然后退出一下这个终端,查看一下刚刚的消息
sh-4.2# ./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
hello world
hello eryajf
可以看出,消息收发都是正常的。
[root@jenkins kafka]$ docker tag test registry.cn-hangzhou.aliyuncs.com/eryajf/kafka:2.11
[root@jenkins kafka]$ docker push registry.cn-hangzhou.aliyuncs.com/eryajf/kafka:2.11
[root@jenkins kafka]$ docker tag test eryajf/kafka:2.11
[root@jenkins kafka]$ docker push eryajf/kafka:2.11
有需要使用的,可以直接通过上边两个地址进行pull使用。
docker pull registry.cn-hangzhou.aliyuncs.com/eryajf/kafka:2.11
docker pull eryajf/kafka:2.11
使用注意,其中将kafka的消息目录定义在了/opt/kafka/kafka-logs
目录,需要持久化的,可以针对这个目录进行持久化!
© 2018 www.qingketang.net 鄂ICP备18027844号-1
武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号
扫码关注,全站教程免费播放
订单金额:
支付金额:
支付方式: