Cloud Technology2 min read

Docker inspect 사용법: IP·포트·마운트 조회와 결과 해석

2019년 4월 15일2 min read작성자 Flature

Docker inspect로 컨테이너 IP, 공개 포트와 마운트를 조회하는 명령을 정리합니다. EXPOSE와 포트 공개의 차이, IP가 비어 있는 경우와 호스트 접속 주소도 구분합니다.

docker inspect는 Docker 객체의 상세 설정을 JSON으로 조회하는 명령입니다. 컨테이너 IP는 Networks, 공개 포트는 Ports, 마운트는 Mounts에서 확인합니다. 이미지와 컨테이너의 이름이 같아도 혼동하지 않도록 객체 종류를 명시하세요.

필요한 정보만 조회하는 명령

docker container inspect --format '{{json .NetworkSettings.Networks}}' CONTAINER
docker container inspect --format '{{json .NetworkSettings.Ports}}' CONTAINER
docker container inspect --format '{{json .Mounts}}' CONTAINER
docker image inspect --format '{{.Architecture}}' IMAGE

CONTAINER와 IMAGE는 실제 이름 또는 ID로 바꿉니다. 전체 JSON에는 환경 변수 등 민감한 설정이 포함될 수 있으므로 공유할 때 필요한 필드만 선택합니다.

로컬 실습: 8080 포트를 컨테이너 80에 연결하기

Docker Engine과 이미지 다운로드가 가능한 개인 실습 환경에서 실행하는 예제입니다. 같은 이름의 컨테이너나 호스트 8080 포트가 이미 사용 중이면 다른 이름·포트를 고르세요. 이미지 태그는 실습 편의를 위한 것이며 운영 버전 고정 예제가 아닙니다.

docker run --detach --name inspect-demo --publish 127.0.0.1:8080:80 nginx:alpine
docker container inspect --format '{{json .NetworkSettings.Ports}}' inspect-demo
curl --fail http://127.0.0.1:8080/
# 실습으로 만든 컨테이너만 정리
docker stop inspect-demo
docker rm inspect-demo

Ports에서 80/tcp 아래의 HostIp가 127.0.0.1, HostPort가 8080인지 확인합니다. 이는 컨테이너 80번으로 들어갈 호스트 측 주소입니다. curl은 로컬 Docker 데몬을 사용한다는 전제이며, 원격 데몬이면 실제 Docker 호스트에서 확인해야 합니다. 이 예제의 예상 동작이며 특정 운영 환경의 실측 결과는 아닙니다.

IP와 포트 결과가 예상과 다를 때

  • Config.ExposedPorts는 이미지·컨테이너가 선언한 포트 정보입니다. EXPOSE만으로 호스트에 포트가 공개되지는 않습니다.
  • 연결된 네트워크가 여러 개라면 IP도 여러 개입니다. 상위 IPAddress 한 필드만 보지 말고 네트워크별 값을 확인합니다.
  • 컨테이너 내부 IP가 내 PC에서 접근 가능한 주소라는 뜻은 아닙니다. Docker Desktop·원격 데몬·네트워크 드라이버에 따라 경로가 다릅니다.
  • 포트 매핑이 비었어도 서비스가 없다고 단정하지 마세요. host 네트워크처럼 포트 공개 방식이 다른 구성이 있습니다.
  • 마운트는 Type, Source, Destination, RW를 함께 보고 읽기 전용 여부와 실제 경로를 구분합니다.

포트 매핑이 맞아도 애플리케이션이 컨테이너 내부에서 해당 포트를 수신하지 않으면 접속할 수 없습니다. 조회한 설정과 실제 서비스 응답을 별도로 확인하세요.

참고 자료

기존 기록의 화면과 도식

최초 발행 당시의 참고 자료입니다. 최신 설정은 위 설명과 해당 버전의 공식 문서를 확인하세요.

‘Docker inspect’ – 이미지 or 컨테이너 세부정보 출력