인프런 커뮤니티 질문&답변

dpwlszang님의 프로필 이미지
dpwlszang

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

[docker] kafka docker-compose single-broker.yml 실행 에러

작성

·

280

·

수정됨

0

강의를 따라 docker-compose 를 이용 해 kafka와 zookeeper 컨테이너를 설정을 수정하고,

도커에서 docker-compose-single-broker.yml 파일을 실행하는 과정에서 에러가 발생했습니다.

 

최근에 올라온 유사한 질문의 답변을 참고 해 똑같이 yaml 파일을 구성 했는데, 해결 되지 않았습니다.

참고: https://www.inflearn.com/questions/1187585/docker-compose-f-docker-compose-single-broker-yml-up-d

 

docker-compose-single-broker.yml

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    networks:
      my-network:
        ipv4_address: 172.18.0.100
  kafka:
    # build: .
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 172.18.0.101
      KAFKA_CREATE_TOPICS: "Topic1:1:3"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper
    networks:
      my-network:
        ipv4_address: 172.18.0.101

networks:
  my-network:
    external: true 
    name: ecommerce-network

명령어

$ docker-compose -f docker-compose-single-broker.yml up -d

Error

[+] Building 36.9s (8/9)                                                                                              docker:default
 => [kafka internal] load build definition from Dockerfile                                                                      0.0s
 => => transferring dockerfile: 2.40kB                                                                                          0.0s
 => [kafka internal] load metadata for docker.io/library/openjdk:11-jre-slim                                                    2.0s
 => [kafka auth] library/openjdk:pull token for registry-1.docker.io                                                            0.0s
 => [kafka internal] load .dockerignore                                                                                         0.0s
 => => transferring context: 2B                                                                                                 0.0s
 => [kafka 1/4] FROM docker.io/library/openjdk:11-jre-slim@sha256:93af7df2308c5141a751c4830e6b6c5717db102b3b31f012ea29d842dc4f  0.0s
 => [kafka internal] load build context                                                                                         0.0s
 => => transferring context: 243B                                                                                               0.0s
 => CACHED [kafka 2/4] COPY download-kafka.sh start-kafka.sh broker-list.sh create-topics.sh versions.sh /tmp2/                 0.0s
 => ERROR [kafka 3/4] RUN set -eux ;     apt-get update ;     apt-get upgrade -y ;     apt-get install -y --no-install-recomm  34.8s
------

...생략

failed to solve: process "/bin/sh -c set -eux ;     apt-get update ;     apt-get upgrade -y ;     apt-get install -y --no-install-recommends jq net-tools curl wget ;     apt-get install -y --no-install-recommends gnupg lsb-release ; \tcurl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ; \techo   \t\t\"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian   \t\t$(lsb_release -cs) stable\" | tee /etc/apt/sources.list.d/docker.list > /dev/null ;     apt-get update ;     apt-get install -y --no-install-recommends docker-ce-cli ;     apt remove -y gnupg lsb-release ;     apt clean ;     apt autoremove -y ;     apt -f install ;     apt-get install -y --no-install-recommends netcat ;     chmod a+x /tmp2/*.sh ;     mv /tmp2/start-kafka.sh /tmp2/broker-list.sh /tmp2/create-topics.sh /tmp2/versions.sh /usr/bin ;     sync ;     /tmp2/download-kafka.sh ;     tar xfz /tmp2/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz -C /opt ;     rm /tmp2/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz ;     ln -s /opt/kafka_${SCALA_VERSION}-${KAFKA_VERSION} ${KAFKA_HOME} ;     rm -rf /tmp2 ;     rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 2

 

강의 내용과는 다르게 뭘 다운 받더니 중간에 ERROR 가 발생합니다.

구글링을 해도 안나오고, wurstmeister/kafka-docker 이슈에도 적혀져 있는게 없는데 혹시 해결 하실 분 계실까요? 😭😭😭😭

답변 2

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

실행하신 커맨드를 보면 docker-compose-single-broker.yml 파일을 docker-compose에서 실행한 것 같은데, 실제 오류 화면에서는 Dockerfile을 빌드하고 발생한 오류가 보입니다. git에서 다운로드 받으신 kafka-docker 폴더에 보시면, Dockerfile이 있고, 해당 파일 첫줄에 보시면 아래와 같은 openjdk:11-jre-slim을 Base로 이미지를 생성하고 있습니다.

FROM openjdk:11-jre-slim

ARG kafka_version=2.8.1
ARG scala_version=2.13

오류 메시지에서도 [kafka internal] load metadata for docker.io/library/openjdk:11-jre-slim 메시지가 발생한 것으로 보아, 실행하신 docker-compose 파일이 docker-compose-single-broker.yml 파일이 아니라 다른 파일(예를 들어, docker-compose.yml)이 아닌가 싶습니다. 저도 docker-compose-single-broker.yml 파일이 아닌 docker-compose.yml 파일로 실행시 동일한 에러가 발생했습니다. 에러에 대한 원인은 해당 Dockerfile에 있는 부분을 수정해야 해서, 강의에서도 그냥 Zookeeper와 Kafka 모두 이미지를 Pull해 와서 사용하는 것으로 진행했습니다.

wurstmeister/zookeeper
wurstmeister/kafka

실행한신 docker-compose의 파일명을 다시한번 확인해 보시면 좋을 것 같습니다. 추가로, Apache Kafka에서도 지난 2월부터 공식적인 Docker이미지를 제공하고 있습니다. docker-compose-single-broker.yml 파일을 아래와 같이 수정하시고 실행해 보셔도 될 것 같습니다.

version: '3.7'
services:
  kafka:
    image: apache/kafka:3.7.0
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 172.18.0.101
      KAFKA_CREATE_TOPICS: "Topic1:1:3"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper
    networks:
      my-network:
        ipv4_address: 172.18.0.101

networks:
  my-network:
    external: true
    name: my-network

Image Layer Details - apache/kafka:3.7.0 | Docker Hub

감사합니다.

dpwlszang님의 프로필 이미지
dpwlszang
질문자

안녕하세요 강사님 먼저 바쁘신 중에 답변 감사드립니다.

다시 확인 해 보니 말씀대로 docker-compose.yml 파일에 작성했더라구요.. 정말 바보멍청이...

제가 질문에 올린대로 docker-compose-single-broker.yml에 작성하고 실행했을 때 제대로 컨테이너가 실행된걸 확인 했습니다.


추가로 올려주신 코드대로 docker-compose-single-broker.yml을 구성하고 실행 해 보았는데, 아래와 같은 에러가 발생했습니다.

...\\kafka-docker\\docker-compose-single-broker.yml: version is obsolete"
service "kafka" depends on undefined service "zookeeper": invalid compose project

그래서 docker-compose-single-broker.yml에서 version 을 없애고, services.zookeeper를 추가해서 실행했더니

zookeeper는 실행되는데 apache/kafka 는 실행이 안되더라구요

 

apache/kafka 로그를 확인 해보니 아래와 같아서

===> Setting default values of environment variables if not already set.
CLUSTER_ID not set. Setting it to default value: "5****"
Using provided cluster id 5**** ...
The kafka configuration file appears to be for a legacy cluster. Formatting is only supported for clusters in KRaft mode.

구글링을 해보니까 다른 환경변수 설정을 해야한다고 나오더라구요

Kafka 최근 버전부터 KRaft모드를 지원 해서 Zookeeper 없이 Kafka를 동작시킬 수 있게 해주는 것까지 이해했지만, 환경변수를 어떻게 설정해서 사용하는게 맞는건지 자세히 몰라서 찾아보다가 원래 제 에러를 해결하는데 그쳤습니다.

 

어쨋든 문제해결에 도움을 주셔서 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. dpwlszang 님께서 겪고 계신 도커에서 Kafka 실행 중에 에러가 발생하는 상황을 바탕으로 적절한 답변을 찾아보았습니다.

가장 유사한 상황은 “docker-compose -f docker-compose-single-broker.yml up -d” 관련 질문에서 찾을 수 있습니다. 하지만 여기서 다룬 솔루션은 dpwlszang 님께서 참조하셨던 것과 동일하며, 이미 확인하신 내용인 것으로 보입니다.

추가적으로, Docker와 Kafka를 설정하는 과정에서 유사한 문제를 해결한 질문이 있으니 참고해보시는 것도 도움이 될 수 있습니다:

  1. “kafka docker-compose-up network 설정 불가” - Kafka와 관련된 Docker 네트워크 설정 문제 해결 방법을 다루고 있습니다. 비록 직접적으로 에러 메시지 해결 방법을 제시하지는 않지만, 네트워크 설정 부분이 도움이 될 수 있습니다.

  2. “안녕하세요! 질문이 있습니다.” - M1 칩 기반의 Mac에서 발생한 Kafka 관련 문제의 해결 과정을 설명합니다. M1 칩과 관련된 특별한 처리 과정은 Windows 환경과 직접적인 관련이 없으나, Docker와 Kafka 설정 상의 유용한 정보를 얻을 수 있습니다.

  3. “arm64 기반 docker-compose kafka” - ARM64 아키텍처에서 Docker와 Kafka 실행 관련 설정 방법을 다루고 있습니다. 여러분의 환경과 다를 수 있으나, Docker의 플랫폼 설정에 관한 유용한 정보를 포함하고 있습니다.

이렇게 다양한 설정과 환경에 맞춰 Kafka와 Docker를 구성하기 위한 방법들을 찾아보았지만, 구체적으로 dpwlszang 님의 문제를 해결할 직접적인 답변을 제공하기 어렵습니다. 에러 메시지를 보면, Docker 이미지 빌드 과정에서 문제가 발생하는 것 같으니, 그 부분에 초점을 맞춰 추가적인 검토나 Docker와 Kafka의 공식 문서를 찾아보는 것을 권합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dpwlszang님의 프로필 이미지
dpwlszang

작성한 질문수

질문하기