이미지와 컨테이너의 구조

  • 이미 생성된 이미지는 어떠한 경우로도 변경되지 않음
  • 컨테이너 계층이, 원래 이미지에서 변경된 파일시스템 등을 저장한다

볼륨

층위표현의미
일반 개념volume / mount컨테이너에 외부 저장소를 붙이는 행위 전반
Docker 객체Docker volumedocker volume create, docker volume ls로 관리되는 Docker의 저장소 객체
마운트 방식bind mount호스트의 특정 경로를 컨테이너 경로에 직접 붙이는 방식
  • 둘 다 컨테이너 입장에서는 mount다.
    • named volume은 Docker volume 객체다.
    • bind mount는 Docker volume 객체가 아니다.

볼륨 컨테이너

  • 구식 구조. 실질적으로 쓸 필요는 없다
  • 돌아가는 서비스가 없는 빈 컨테이너를 하나 올리고, 이 컨테이너 생성 시점에 볼륨을 만들고, 이 볼륨에 다른 서비스 돌리는 컨테이너가 붙어서 사용함

inspect

보고 싶은 것명령의미
Compose 파일이 최종적으로 어떻게 해석되는지docker compose configcompose.yaml을 병합, 변수 치환, short syntax 확장 후 canonical format으로 출력
Compose 프로젝트 목록docker compose ls실행 중인 Compose 프로젝트 목록 확인
Compose 프로젝트의 컨테이너 목록docker compose ps해당 Compose 프로젝트가 만든 컨테이너 확인
실제 컨테이너의 상세 정보docker inspect <container>Docker Engine 객체의 low-level JSON 정보 확인
특정 서비스 컨테이너의 상세 정보`docker compose ps -qxargs docker inspect`
  • docker compose inspect라는 표준 명령은 없다.
  • docker inspect Docker가 관리하는 객체의 low-level 정보를 JSON으로 반환

네트워크 (veth)

로깅 (AWS cloudwatch)

syslog, rsyslog, fluentd

ports (ephemeral)

  • Docker에서 호스트 포트를 명시하지 않고 컨테이너 포트만 단독으로 지정할 경우, 호스트의 빈 포트를 랜덤하게 배정한다.
  • 이를 임시 포트(Ephemeral Port) 자동 할당이라고 한다.
항목잘 알려진 포트등록된 포트동적 포트임시 포트
포트 범위0 ~ 10231024 ~ 4915149152 ~ 65535운영체제 설정에 따라 다름
다른 명칭Well-Known Port, System PortRegistered Port, User PortDynamic Port, Private PortEphemeral Port
관리 / 예약 주체IANAIANA에 등록 요청 가능IANA가 예약하거나 관리하지 않음OS의 TCP/UDP 스택
주요 용도가장 범용적인 TCP/IP 애플리케이션용 포트RFC 표준으로 정해지지 않은 TCP/IP 서버 애플리케이션들이 주로 사용사설 프로토콜, 임시 연결, 특수 애플리케이션용클라이언트 프로세스가 서버에 접속할 때 일시적으로 사용하는 포트
접근 권한 / 특징대부분의 시스템에서 관리자 권한 또는 높은 권한이 필요함. UNIX/Linux 계열에서는 일반적으로 root 권한이 필요함일반 사용자가 접근 가능한 경우가 많음. 애플리케이션 개발자가 IANA에 등록 요청하여 특정 애플리케이션에 할당받을 수 있음누구나 등록 없이 사용할 수 있음. 특정 기관이나 애플리케이션 내부 용도에 적합함OS가 현재 사용 중인 포트를 관리하며, 충돌을 줄이기 위해 pseudo-random 방식으로 할당함. 예시로 BSD Unix는 1024 ~ 4999 범위를 임시 포트로 사용했음
도커의 ephemeral 이 이 범위를 쓴다