본문 바로가기
Develop

[Docker] docker inspect로 컨테이너 정보 찾기

by 너드나무 2025. 11. 24.
반응형

docker inspect 명령은 도커 컨테이너의 모든 설정을 JSON 형식으로 반환해 줍니다.
하지만 이 출력이 너무 방대하기 때문에, 어떤 필드를 어디에 써야 하는지 모르면 단순한 정보 덤일 뿐입니다.

이번 글에서는 docker inspect 결과에서 중요한 항목들을 의미 기반으로 매핑해서,
실무에서 컨테이너 디버깅, 설정 변경, 보안 점검 등에 어떻게 활용할 수 있는지 정리합니다.


1. 예시 명령어

docker inspect opensearch


2. 핵심 항목 매핑표: 이 값은 어디에 쓰이는가?

JSON 키 설명 활용 예시
Id 컨테이너 고유 ID (SHA256) docker logs, docker cp, 디버깅 대상 명시
Path 실행 명령 컨테이너 시작 시 호출되는 진입점 (entrypoint)
Args 실행 시 인자 Path 뒤에 붙는 명령어 인자
State.Status 실행 상태 running, exited 여부 확인
State.Pid 컨테이너의 PID (호스트 기준) nsenter, top, strace 등으로 접근 가능
RestartCount 재시작 횟수 불안정한 컨테이너 감지
Mounts[].Source 호스트 디렉터리 호스트 ↔ 컨테이너 공유 디렉터리 확인
Mounts[].Destination 컨테이너 내 경로 실제 마운트된 위치
HostConfig.NetworkMode 네트워크 모드 host, bridge, none 등
HostConfig.Binds 볼륨 바인딩 데이터 지속성 또는 공유 확인
HostConfig.Privileged 권한 상승 여부 보안 설정 점검 포인트
Config.Entrypoint 엔트리포인트 스크립트 실행 파일 위치 추정 (WorkingDir와 함께)
Config.Cmd Entrypoint 이후 실행 명령 엔트리포인트가 실행한 실제 커맨드
Config.Env[] 환경 변수 목록 애플리케이션 설정 파악
Config.Image 사용 이미지 배포 이미지 버전 추적
Config.ExposedPorts 외부 노출 포트 방화벽/보안그룹과 연계 검토
NetworkSettings.Networks 컨테이너가 연결된 네트워크 overlay, host, custom network 확인
LogPath 로그 파일 경로 JSON 로그 파일 위치 → 문제 분석 가능

3. 실제 사례 분석: Entrypoint 스크립트 추적하기

% docker inspect opensearch
...
"WorkingDir": "/usr/share/opensearch",
"Entrypoint": ["./opensearch-docker-entrypoint.sh"]
...

3-1. 매핑 해석

항목 의미
WorkingDir /usr/share/opensearch 모든 상대 경로는 여기 기준
Entrypoint ./opensearch-docker-entrypoint.sh 실행 스크립트는 이 디렉토리 아래 존재

→ 실제 경로: /usr/share/opensearch/opensearch-docker-entrypoint.sh

3-2. 파일 확인 방법

# 파일 검색
docker exec -it opensearch bash
ls -l /usr/share/opensearch/opensearch-docker-entrypoint.sh

# 전체 검색
docker exec -it opensearch find / -name "*entrypoint*.sh" 2>/dev/null

4. 매핑을 활용한 실전 시나리오들

4-1. 데이터 디렉터리가 어딘지 확인하고 싶다

"Mounts": [
  {
    "Source": "/data/QSv3_with_Lobster/opensearch-data",
    "Destination": "/usr/share/opensearch/data"
  }
]

→ 호스트 경로 /data/QSv3_with_Lobster/opensearch-data가
→ 컨테이너 안에서는 /usr/share/opensearch/data로 마운트됨

✅ 로그 손실/데이터 복구/디스크 용량 체크 등 실무에 활용

4-2. 어떤 포트를 외부에 노출하는지 확인

"ExposedPorts": {
  "9200/tcp": {},
  "9300/tcp": {}
}

→ 컨테이너가 외부에 열어둔 포트
→ 보안 정책, 보안 그룹 설정과 비교하여 확인

4-3. 이 컨테이너는 루트 권한인가?

"Config.User": "1000",
"HostConfig.Privileged": false

→ UID 1000 사용 중 (비루트 유저)
→ privileged 모드 아님 → 보안상 안전한 설정

5. 요약: docker inspect는 값보다 문맥이 중요

확인하고 싶은 것 어디를 보면 되는가?
실행 중인 파일 경로 Path, Entrypoint, WorkingDir
어떤 디렉터리가 마운트됐는가 Mounts[].Source, Mounts[].Destination
어디서 문제가 났는가 LogPath, State.ExitCode, State.Error
컨테이너 재시작 여부 RestartCount, RestartPolicy
환경 변수 확인 Config.Env[]

 

728x90
반응형