도커는 리눅스 상에서 컨테이너 방식으로 프로세스를 격리해서 실행하고 관리할 수 있도록 도와주며, 계층화된 파일 스스템에 기반해 효율적인 이미지(프로세스 실행 환경)을 구축할 수 있도록 해주는 컨테이너입니다.
https://www.docker.com/products/docker-desktop
다음 링크를 들어가서 Docker를 설치해줍니다.
$ docker -v
설치 후, 터미널에 다음 명령어를 입력하면
$ docker -v
Docker version 20.10.20, build 9fdeb9c
$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c
Docker 버전을 확인할 수 있습니다.
Mac OS 환경에서는 docker 설치 시 docker-compose가 자동으로 설치된다고 합니다.
여기서 docker-compose란,
kafka와 Zookeeper(kafka 분산 처리에 대한 코디네이트를 진행하는 도구)이 두개를 모두 활용하기 위해 사용
설치 후
$ docker search kafka
다음 명령어를 통해 docker의 이미지를 검색해줍니다.
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
bitnami/kafka Apache Kafka is a distributed streaming plat… 562 [OK]
ubuntu/kafka Apache Kafka, a distributed event streaming … 13
bitnami/kafka-exporter 8
bitnami/kafka-trigger-controller Source for this controller is in the kubeles… 5
ibmcom/kafka Docker Image for IBM Cloud Private-CE (Commu… 5
openwhisk/kafkaprovider Apache OpenWhisk event provider service for … 2 [OK]
rancher/kafka 2
ibmcom/kafka-java-liberty-sample Docker image for the IBM Event Streams Java … 2
ibmcom/kafka-java-console-sample Docker image for the IBM Event Streams Java … 1
ibmcom/kafka-sender 1
ibmcom/kafka-retry Kafka Retry provides a generic, delayed retr… 1
ibmcom/kafka-nodejs-console-sample Docker image for the IBM Event Streams Node.… 1
ibmcom/kafka-python-console-sample Docker image for the IBM Event Streams Pytho… 1
ibmcom/kafka-receiver 1
pachyderm/kafka-example-producer 0
vertica/kafka-scheduler Kafka Scheduler is a standalone java app tha… 0
ibmcom/kafka-ppc64le An open-source stream processing platform 0
antrea/kafka-consumer 0
radarbase/kafka-connect-mongodb-sink Kafka MongoDB sink connector 0
radarbase/kafka-manager Integrate kafka-manager with the rest of the… 0
radarbase/kafka-connect-rest-fitbit-source Kafka Connect source connector for a genera… 0
litmuschaos/kafka-client 0
pachyderm/kafka-example-consumer 0
radarbase/kafka-init 0
pachyderm/kafka_spout 0
참고한 블로그에서와 다른 결과가 나왔습니다.
나는 STARTS 값이 bitnami/kafka
가 가장 높은 결과값이 나왔지만
참고한 사이트에서는 wurstmeister/kafka
라는 값이 나오며 1445로 가장 높은 값이 나왔습니다.
일단 블로그를 따라하기 위해 블로그의 내용으로 다운을 받았습니다.
$ git clone https://github.com/wurstmeister/kafka-docker
다음 명령어를 입력해주면
kafka-docker 폴더가 생성됩니다.
kafka-docker 폴더로 이동합니다.
maseunghyun@maseunghyeon-ui-MacBookPro kafka-docker % ls
CHANGELOG.md docker-compose-single-broker.yml overrides
Dockerfile docker-compose-swarm.yml start-kafka-shell.sh
LICENSE docker-compose.yml start-kafka.sh
README.md docker_buildx test
broker-list.sh docker_push versions.sh
create-topics.sh download-kafka.sh
여기서
docker-compose.yml 파일을 수정해주겠습니다.
$ sudo vi docker-compose.yml
vi 편집기를 통해 해당 파일을 열어주겠습니다.
혹시 오류날 시 원본
1 version: '2' 2 services: 3 zookeeper: 4 image: wurstmeister/zookeeper 5 ports: 6 - "2181:2181" 7 restart: unless-stopped 8 9 kafka: 10 build: . 11 ports: 12 - "9092" 13 environment: 14 DOCKER_API_VERSION: 1.22 15 KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100 16 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 17 volumes: 18 - /var/run/docker.sock:/var/run/docker.sock 19 restart: unless-stopped
여기서 4가지 항목을 바꿔주겠습니다.
1 version: '2' 2 services: 3 zookeeper: 4 container_name: ma-zookeeper 5 image: wurstmeister/zookeeper 6 ports: 7 - "2181:2181" 8 restart: unless-stopped 9 10 kafka: 11 container_name: ma-kafka 12 image: wurstmeiter/kafka 13 build: . 14 ports: 15 - "9092" 16 environment: 17 DOCKER_API_VERSION: 1.22 18 KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1 19 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 20 KAFKA_CREATE_TOPICs: "kafka_user:1:1" 21 volumes: 22 - /var/run/docker.sock:/var/run/docker.sock 23 restart: unless-stopped
```shell
#추가
4 container_name : [사용자 지정]
#추가
11 container_name : [사용자 지정]
#수정
15 # KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
16 KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
#추가
#Topic명:Partition개수:Replica개수
18 KAFKA_CREATE_TOPICs: "kafka_user:1:1"
변경 후
docker-compose up -d
명령어를 실행하여 해당 파일을 background값으로 실행시킵니다.
Recreating kafka-docker_zookeeper_1 ... done
Recreating kafka-docker_kafka_1 ... done
다음과 같은 명령어가 실행되면서 실행이 완료됩니다.
이 후,
잘 실행되는지 확인하기 위해 다음 명령어를 입력해줍니다.
# zookeeper 로그 확인
$ docker container logs ma-zookeeper
# kafka 로그 확인
$ docker container logs ma-kafka