반응형
문제 상황
카프카 환경을 구축하면서 confluent 가이드에서 제공하는 `docker-compose.yml` 파일을 이용하게 되었다.
해당 파일은 카프카와 관련된 여러 컴포넌트 이미지들을 포함하는데, 각 이미지들의 세부 사항들을 확인하기 어려웠다.
특히 컨테이너를 띄우면 컨테이너 내부의 파일들을 디스크에 마운트하고 싶었는데, 어떤 내부 파일들을 마운트해야 하는지, 이미지에서 기본적으로 마운트하는 폴더들은 무엇인지 확인하기 어려웠다.
confluent에서 제공하는 docker-compose.yml 파일
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:6.2.1
hostname: zookeeper
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
broker:
image: confluentinc/cp-server:6.2.1
hostname: broker
container_name: broker
depends_on:
- zookeeper
ports:
- "9092:9092"
- "9101:9101"
environment:
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://${SERVER_IP_ADDRESS}:9092 # You have to check SERVER_IP_ADDRESS is well defined in global variable or .env file.
KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9101
KAFKA_JMX_HOSTNAME: localhost
KAFKA_CONFLUENT_SCHEMA_REGISTRY_URL: http://schema-registry:8081
CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS: broker:29092
CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS: 1
CONFLUENT_METRICS_ENABLE: 'true'
CONFLUENT_SUPPORT_CUSTOMER_ID: 'anonymous'
[...]
해결 방법
도커에서는 해당 컨테이너의 상세정보를 보여주는 `docker inspect` 명령어를 사용할 수 있다.
이를 통해 컨테이너의 세부 정보 및 해당 이미지의 볼륨(마운트) 정보를 확인할 수 있다.
docker inspect broker
>>>
[
{
"Id": "fccbe2b12714ff50253cc4dd80539c798f41a0883502bda3b0a7f3f813b9402c",
"Created": "2023-06-16T07:31:24.584892184Z",
"Path": "/etc/confluent/docker/run",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 231534,
"ExitCode": 0,
"Error": "",
"StartedAt": "2023-06-16T07:31:28.315368481Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:745895703263072416be27b333d19eff4494b287001f6c6adddd22b963a3429d",
"ResolvConfPath": "/data1/docker/containers/fccbe2b12714ff50253cc4dd80539c798f41a0883502bda3b0a7f3f813b9402c/resolv.conf",
"HostnamePath": "/data1/docker/containers/fccbe2b12714ff50253cc4dd80539c798f41a0883502bda3b0a7f3f813b9402c/hostname",
"HostsPath": "/data1/docker/containers/fccbe2b12714ff50253cc4dd80539c798f41a0883502bda3b0a7f3f813b9402c/hosts",
"LogPath": "/data1/docker/containers/fccbe2b12714ff50253cc4dd80539c798f41a0883502bda3b0a7f3f813b9402c/fccbe2b12714ff50253cc4dd80539c798f41a0883502bda3b0a7f3f813b9402c-json.log",
"Name": "/broker",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
[...]
"Mounts": [
{
"Type": "volume",
"Name": "b888fe858033ec47fa5d587eb21d510c8e7546226a5f6c4309fe311cb7d7bc7a",
"Source": "/data1/docker/volumes/b888fe858033ec47fa5d587eb21d510c8e7546226a5f6c4309fe311cb7d7bc7a/_data",
"Destination": "/var/lib/kafka/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "eee55018dc431ac5b07d947ef46fe399ffeb009c20d577013bbe4ceef8879dad",
"Source": "/data1/docker/volumes/eee55018dc431ac5b07d947ef46fe399ffeb009c20d577013bbe4ceef8879dad/_data",
"Destination": "/etc/kafka/secrets",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "broker",
"Domainname": "",
"User": "appuser",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"9092/tcp": {},
"9101/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"KAFKA_AUTO_CREATE_TOPICS_ENABLE=false",
"KAFKA_BROKER_ID=1",
"KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181",
"KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT",
"KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://broker:29092,PLAINTEXT_HOST://10.1.3.81:9092",
"KAFKA_METRIC_REPORTERS=io.confluent.metrics.reporter.ConfluentMetricsReporter",
"KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1",
"KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS=0",
"KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR=1",
"KAFKA_CONFLUENT_BALANCER_TOPIC_REPLICATION_FACTOR=1",
"KAFKA_TRANSACTION_STATE_LOG_MIN_ISR=1",
"KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1",
"KAFKA_JMX_PORT=9101",
"KAFKA_JMX_HOSTNAME=localhost",
"KAFKA_CONFLUENT_SCHEMA_REGISTRY_URL=http://schema-registry:8081",
"CONFLUENT_METRICS_REPORTER_BOOTSTRAP_SERVERS=broker:29092",
"CONFLUENT_METRICS_REPORTER_TOPIC_REPLICAS=1",
"CONFLUENT_METRICS_ENABLE=true",
"CONFLUENT_SUPPORT_CUSTOMER_ID=anonymous",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"container=oci",
"LANG=C.UTF-8",
"CUB_CLASSPATH=\"/usr/share/java/cp-base-new/*\"",
"COMPONENT=kafka"
],
"Cmd": [
"/etc/confluent/docker/run"
],
"Image": "confluentinc/cp-server:6.2.1",
"Volumes": {
"/etc/kafka/secrets": {},
"/var/lib/kafka/data": {}
},
[...]
`docker inspect` 명령어를 통해 broker 컨테이너의 상세정보를 출력한 결과이다.
해당 명령어를 통해 컨테이너의 이미지 정보, 마운트된 폴더들, Config 정보 등을 확인할 수 있다.
Reference
반응형
'서버 및 환경 > Utils' 카테고리의 다른 글
[docker] 우분투에 도커 설치하기 (1) | 2024.01.24 |
---|---|
[Docker] 컨테이너 내에서 apt-get install 시 Unable to loacate package {패키지명} 해결방법 (0) | 2023.08.24 |
[Airflow] 에어플로우 `trigger_rule` 정의 및 파라미터 종류 (0) | 2023.04.03 |
[Airflow] 파이썬에서 Error 로그가 airflow에서는 INFO로 뜨는 이유 (0) | 2023.03.30 |
[Airflow] 에어플로우 BashOperator 에러 발생 안할 때 해결 방법 (0) | 2023.01.25 |