이미지와 컨테이너의 구조

- 이미 생성된 이미지는 어떠한 경우로도 변경되지 않음
- 컨테이너 계층이, 원래 이미지에서 변경된 파일시스템 등을 저장한다
볼륨
| 층위 | 표현 | 의미 |
|---|
| 일반 개념 | volume / mount | 컨테이너에 외부 저장소를 붙이는 행위 전반 |
| Docker 객체 | Docker volume | docker volume create, docker volume ls로 관리되는 Docker의 저장소 객체 |
| 마운트 방식 | bind mount | 호스트의 특정 경로를 컨테이너 경로에 직접 붙이는 방식 |
- 둘 다 컨테이너 입장에서는 mount다.
- named volume은 Docker volume 객체다.
- bind mount는 Docker volume 객체가 아니다.
볼륨 컨테이너
- 구식 구조. 실질적으로 쓸 필요는 없다
- 돌아가는 서비스가 없는 빈 컨테이너를 하나 올리고, 이 컨테이너 생성 시점에 볼륨을 만들고, 이 볼륨에 다른 서비스 돌리는 컨테이너가 붙어서 사용함
inspect
| 보고 싶은 것 | 명령 | 의미 |
|---|
| Compose 파일이 최종적으로 어떻게 해석되는지 | docker compose config | compose.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 -q | xargs docker inspect` |
docker compose inspect라는 표준 명령은 없다.
docker inspect Docker가 관리하는 객체의 low-level 정보를 JSON으로 반환
네트워크 (veth)
로깅 (AWS cloudwatch)
syslog, rsyslog, fluentd
ports (ephemeral)
- Docker에서 호스트 포트를 명시하지 않고 컨테이너 포트만 단독으로 지정할 경우, 호스트의 빈 포트를 랜덤하게 배정한다.
- 이를 임시 포트(Ephemeral Port) 자동 할당이라고 한다.
| 항목 | 잘 알려진 포트 | 등록된 포트 | 동적 포트 | 임시 포트 |
|---|
| 포트 범위 | 0 ~ 1023 | 1024 ~ 49151 | 49152 ~ 65535 | 운영체제 설정에 따라 다름 |
| 다른 명칭 | Well-Known Port, System Port | Registered Port, User Port | Dynamic Port, Private Port | Ephemeral Port |
| 관리 / 예약 주체 | IANA | IANA에 등록 요청 가능 | IANA가 예약하거나 관리하지 않음 | OS의 TCP/UDP 스택 |
| 주요 용도 | 가장 범용적인 TCP/IP 애플리케이션용 포트 | RFC 표준으로 정해지지 않은 TCP/IP 서버 애플리케이션들이 주로 사용 | 사설 프로토콜, 임시 연결, 특수 애플리케이션용 | 클라이언트 프로세스가 서버에 접속할 때 일시적으로 사용하는 포트 |
| 접근 권한 / 특징 | 대부분의 시스템에서 관리자 권한 또는 높은 권한이 필요함. UNIX/Linux 계열에서는 일반적으로 root 권한이 필요함 | 일반 사용자가 접근 가능한 경우가 많음. 애플리케이션 개발자가 IANA에 등록 요청하여 특정 애플리케이션에 할당받을 수 있음 | 누구나 등록 없이 사용할 수 있음. 특정 기관이나 애플리케이션 내부 용도에 적합함 | OS가 현재 사용 중인 포트를 관리하며, 충돌을 줄이기 위해 pseudo-random 방식으로 할당함. 예시로 BSD Unix는 1024 ~ 4999 범위를 임시 포트로 사용했음 |
| | | 도커의 ephemeral 이 이 범위를 쓴다 | |