NAME:镜像名(镜像仓库源的名称)
DESCRIPTION:对该镜像的描述
STARS:类似 Github 里面的 star,表示点赞、喜欢的意思
OFFICIAL:是否 docker 官方发布
AUTOMATED:是否自动构建
docker pull zookeeper:3.8.0-temurin
docker run --name zookeeper --privileged=true -p 2181:2181 -d zookeeper:3.8.0-temurin
这里有一点需要注意,privileged命令的意思是使Docker应用容器获取宿主机root权限(特殊权限)。我使用的是官方提供的镜像,官方给出的示例中并没有使用–privileged=true命令,但是我在创建容器的过程中,没有该命令,会出现一个容器内存错误,导致容器创建失败,目前还不确定是镜像还是虚拟机的问题。
docker exec -it zookeeper_v bash
./bin/zkServer.sh status
截止到这里,zookeeper实际上就已经装好了,借助docker可以轻松快速的装好一个zookeeper服务,但是如果此时需要部署项目就会比较麻烦,我们需要将自己的文件拷贝进入容器内部,然后进入容器内部操作,所以我们需要借助-v参数,将宿主机文件与容器文件做映射;
mkdir /usr/local/dockerv/zookeeper/{data,conf,datalog}
docker cp zookeeper:/data /usr/local/dockerv/zookeeper/
docker cp zookeeper:/conf /usr/local/dockerv/zookeeper/
docker cp zookeeper:/datalog /usr/local/dockerv/zookeeper/
docker run --name zookeeper_v --privileged=true -p 2181:2181 -d \
-v /usr/local/dockerv/zookeeper/data:/data \
-v /usr/local/dockerv/zookeeper/conf:/conf \
-v /usr/local/dockerv/zookeeper/datalog:/datalog \
zookeeper:3.8.0-temurin
与zookeeper镜像的查找以及下载过程基本一致,过程省略。
app-tier:网络名称
bridge:网络类型,桥接模式
docker network create app-tier --driver bridge
docker networ ls
我对这步的理解是:通过app-tier这个网络,可以实现不同容器的网络通信。
注意:这里的zookeeper创建方式跟上面的zookeeper创建教程有所区别,首先这里需要将zookeeper加入到app-tier网络中,其次这里也不需要进行外部挂载。由于我在使用官网镜像时需要使用privileged获取宿主机的权限,这里不想再使用官方镜像了,换成bitnami的zookeeper镜像,这样也可以与kafka保持一致(kafka目前没找到官方镜像,排名第一的是bitnami的镜像)。
docker run -d --name zookeeper-server \
--network app-tier \
-e ALLOW_ANONYMOUS_LOGIN=yes \
bitnami/zookeeper:3.8.0
docker run --name kafka -p 9092:9092 -d \
--network app-tier \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
-e KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
bitnami/kafka:3.0
ALLOW_PLAINTEXT_LISTENER:任何人可以访问
KAFKA_BROKER_ID:在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
KAFKA_CFG_ZOOKEEPER_CONNECT:配置zookeeper管理kafka的路径
KAFKA_CFG_LISTENERS:配置kafka的监听端口
通过docker logs -f kafka查看容器启动日志,如果没什么报错信息,基本上创建就创建成功了,或者通过docker ps查看目前正在运行的容器,如果容器创建成功,此时会处于运行状态,通过ps命令是可以找得到该容器的。
docker exec -it kafka bash
cd /opt/bitnami/kafka/bin/
.kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic mytest
.kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic mytest
通过创建topic以及查看topic命令,可以看出目前kakfa运行正常!
记录一下自己安装创建的过程,以后有新的内容将继续补充!实际上dockerhub上就有相关镜像的安装示例,虽然简单,但是很有参考价值,以后也要养成多看官方文档的习惯!
Docker 安装Zookeeper
Docker安装Kafka教程(超详细)