Jost Do It.

그냥 IT해.

서버 및 환경/Utils

[Docker] 도커 컨테이너 세부정보 확인 및 볼륨 확인하기 (docker inspect)

그냥하Jo. 2023. 6. 19. 09:23
반응형

문제 상황

 

카프카 환경을 구축하면서 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

반응형