kafka 서버를 docker 컨테이너로 실행하는 방법을 단계별로 정리

Kafka 서버를 Docker 컨테이너로 실행하는 방법을 단계별로 정리해드리겠습니다. 가장 일반적인 방식은 Docker Compose를 이용하여 Kafka와 Zookeeper를 함께 실행하는 방법입니다.


Kafka 서버 Docker 컨테이너 실행 단계별 가이드

1. Docker 및 Docker Compose 설치 확인

  • 먼저 Docker가 설치되어 있는지 확인합니다.

    bash
    docker --version
    docker-compose --version
  • 설치되어 있지 않다면 Docker 공식 사이트에서 설치 후, Docker Compose도 설치합니다.


2. Kafka와 Zookeeper를 위한 Docker 네트워크 생성 (선택)

  • 컨테이너 간 통신을 위해 별도의 Docker 네트워크를 생성할 수 있습니다.

    bash
    docker network create kafka-network

3. docker-compose.yml 파일 작성

  • Kafka와 Zookeeper를 한 번에 실행하도록 docker-compose 파일을 만듭니다.

  • 아래는 싱글 노드 Kafka 환경 예시입니다.

text
version: '3.8'

services:
zookeeper:
image: wurstmeister/zookeeper:3.4.6
container_name: local-zookeeper
ports:
- "2181:2181"
networks:
- kafka-network

kafka:
image: wurstmeister/kafka:2.13-2.8.1
container_name: local-kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_CREATE_TOPICS: "my-topic:1:1" # 생성할 토픽명: 파티션 수: 복제본 수
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- kafka-network

networks:
kafka-network:
driver: bridge


4. Docker Compose로 Kafka 컨테이너 실행

  • docker-compose.yml 파일이 있는 디렉터리에서 다음 명령어를 실행합니다.

    bash
    docker-compose up -d
  • 컨테이너가 백그라운드에서 실행되며, docker ps 명령으로 실행 상태를 확인할 수 있습니다.


5. Kafka 토픽 생성 및 테스트

kafka 서버를 docker 컨테이너로 실행하는 방법을 단계별로 정리

  • Kafka 컨테이너에 접속하여 토픽을 만들거나 콘솔을 통해 메시지를 주고받을 수 있습니다.

    bash
    docker exec -it local-kafka bash
  • 토픽 생성 명령 예:

    bash
    kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
  • 프로듀서 메시지 전송 예:

    bash
    kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
  • 컨슈머 메시지 수신 예:

    bash
    kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092

6. 컨테이너 중지 및 제거

  • Kafka와 Zookeeper 컨테이너를 중지하려면:

    bash
    docker-compose down

참고사항

  • wurstmeister/kafka 이미지는 널리 쓰이는 Kafka Docker 이미지입니다.

  • KAFKA_ADVERTISED_HOST_NAME는 호스트 IP 또는 도커 네트워크에 맞게 설정해야 합니다.

  • 필요에 따라 여러 토픽 생성, 토픽 설정, 클러스터 확장도 가능합니다.

  • M1/M2 Mac 같은 ARM 기반 환경에서는 이미지 호환성을 반드시 확인하세요.

이 과정으로 로컬 또는 개발 환경에서 쉽게 Kafka 서버를 Docker 컨테이너로 띄워 사용할 수 있습니다.