Docker笔记之制作kafka镜像
文章发布较早,内容可能过时,阅读注意甄别。
# 1,准备工作
# 1,下载 kafka。
wget https://mirrors.cnnic.cn/apache/kafka/0.11.0.2/kafka_2.11-0.11.0.2.tgz
1
然后上传到服务器。
# 2,基础镜像。
需要准备一个 jdk 镜像。
docker pull eryajf/jdk:1.8
1
# 2,创建镜像
# 1,原料准备。
创建一个目录,有如下内容。
[root@jenkins kafka]$ls
Dockerfile kafka.tar run.sh
1
2
2
其中kafka.tar
是在解压之后,重命名为kafka
,然后再次打包而成,这样方便后续操作。
# 2,查看内容。
查看两个文件的内容。
[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
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
服务通过run.sh
进行初始化,里边简单配置了一下 kafka,然后启动。
[root@jenkins kafka]$cat Dockerfile
FROM eryajf/jdk:1.8
MAINTAINER eryajf <liqilong@edspay.com>
ENV LANG en_US.UTF-8
ADD kafka.tar /opt
ADD run.sh /
EXPOSE 9092
ENTRYPOINT [ "sh", "-c", "/run.sh" ]
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 3,构建镜像。
[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 <liqilong@edspay.com>
---> 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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 3,启动验证
启动一下刚刚构建的镜像。
[root@jenkins kafka]$docker run -itd -p 9092:9092 --name aa test
c49f55f91edf1c6ecdf2c37d842f250a562a55df164a51571cfc71747f330e13
1
2
2
进入镜像创建消息验证。
[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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
可以看出,消息收发都是正常的。
# 4,上传公用
# 1,阿里云。
[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
1
2
2
# 2,官方。
[root@jenkins kafka]$ docker tag test eryajf/kafka:2.11
[root@jenkins kafka]$ docker push eryajf/kafka:2.11
1
2
2
有需要使用的,可以直接通过上边两个地址进行 pull 使用。
docker pull registry.cn-hangzhou.aliyuncs.com/eryajf/kafka:2.11
docker pull eryajf/kafka:2.11
1
2
2
使用注意,其中将 kafka 的消息目录定义在了/opt/kafka/kafka-logs
目录,需要持久化的,可以针对这个目录进行持久化!
上次更新: 2024/11/19, 23:11:42