我如何安装 运行 kafka 作为单独的 docker 映像而不是 Zookeeper

How could I install and run kafka as a separate docker image than Zookeeper

这是我用来安装 zookeeper 的当前 Dockerfile,然后 运行 它在 CentOS 容器上:

FROM centos:7

RUN yum -y --quiet install wget && yum -y --quiet install java-11-openjdk && yum -y --quiet autoremove && yum clean all  && rm -rf /var/cache/yum

RUN wget -q http://apache.forsale.plus/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
RUN tar -xzf zookeeper-3.4.14.tar.gz
RUN mv zookeeper-3.4.14 /opt/zookeeper
RUN cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg

EXPOSE 2181 2888 3888

WORKDIR /opt/zookeeper

VOLUME ["/opt/zookeeper/conf", "tmp/zookeeper"]

ENTRYPOINT ["/opt/zookeeper/bin/zkServer.sh"]
CMD ["start-foreground"]

我最困惑的是我如何将两项服务作为单独的 images/containers 提供给 运行,但仍相互交互。

我也对如何将其设置为集群感到困惑。 如果可能的话,我宁愿不必使用 docker compose。

您可以使用 Docker network 并在图像之间使用 DNS 服务名称。

how I would set it up as a cluster

如果您不想使用 Compose,那么 docker run 仍然有效。或者使用 Terraform 或 Kubernetes/OpenShift


FWIW,我建议您使用现有的 Zookeeper 和 Kafka 镜像,而不是自己制作