Docker에서 컨테이너는 NAT를 사용하여 외부 네트워크와 통신.
NAT는 내부 네트워크의 여러 장치가 하나의 공용 IP를 통해 외부와 연결되도록 IP를 변환하는 기술.
Docker 호스트는 Docker 엔진이 실행되는 머신(물리적 또는 가상 환경).
컨테이너는 호스트 상에서 실행되며, 호스트는 네트워크나 볼륨 등을 관리.
호스트의 특정 포트를 컨테이너의 포트에 연결.
외부 클라이언트가 호스트의 포트를 통해 컨테이너에 접근 가능.
예: docker run -p 8080:80 nginx (호스트의 8080 → 컨테이너의 80)
컨테이너를 백그라운드에서 실행, 터미널을 즉시 반환.
주로 장시간 실행되는 서비스(웹 서버 등)에 사용.
예: docker run -d nginx
Docker 볼륨은 데이터를 지속적으로 보관하거나 여러 컨테이너 간에 공유할 때 사용된다. 컨테이너 재시작 시 데이터가 유지되며, 호스트 시스템과 분리되어 안전하게 관리된다.
데이터 지속성: 컨테이너 재시작 시 데이터 유지.
컨테이너 간 공유: 데이터 공유 및 읽기/쓰기 가능.
퍼포먼스: 파일 시스템 퍼포먼스 최적화.
익명 볼륨: 이름 없이 자동 생성, 명시적 관리 X.
docker run -v /container/data busybox
이름 있는 볼륨: 이름 지정, 재사용 가능.
docker volume create myvolume
docker run -v myvolume:/container/data busybox
바인드 마운트: 호스트 디렉토리와 연결.
docker run -v /host/path:/container/data busybox
PostgreSQL 공식 이미지:
경량화, 단순 PostgreSQL 제공.
초보자에게는 초기 설정이 까다로울 수 있음.
Bitnami 이미지:
사전 구성된 도구와 Kubernetes 친화적인 기능 포함.
확장 기능이 필요하거나 클라우드 환경에 적합.
비교 요약
| 특징 | PostgreSQL 공식 이미지 | Bitnami PostgreSQL 이미지 |
|---|---|---|
| 크기 및 성능 | 작고 빠름 | 더 크고 약간 느림 |
| 구성 및 유연성 | 기본 제공, 직접 설정 필요 | 사전 구성 옵션이 다양함 |
| 초보자 친화성 | 낮음 | 높음 |
| 확장 기능 | 제한적 | 확장 및 부가 기능 포함 |
| Kubernetes 친화성 | 일반적 | Helm 차트로 최적화됨 |