Container 컨테이너 (Container) 는 호스트 OS 커널을 공유하면서 애플리케이션과 그 종속성들을 격리된 환경에서 실행할 수 있게 해주는 경량화된 가상화 방식이다. 네임스페이스와 cgroups 를 활용해 프로세스, 네트워크, 파일 시스템을 격리한다.
Docker, Podman, LXC 등의 기술을 통해 이미지 기반 배포가 가능하며, Kubernetes 같은 오케스트레이션 시스템과 함께 사용되어 DevOps, CI/CD, 마이크로서비스 아키텍처의 핵심 기술로 자리잡고 있다. 컨테이너는 빠른 배포, 일관된 환경 제공, 이식성, 리소스 효율성을 핵심 가치로 제공한다.
핵심 개념 필수 개념 컨테이너 (Container): 애플리케이션과 그 실행 환경을 운영체제 수준에서 분리된 단위로 패키징하여 실행하는 기술. 이미지 (Image): 컨테이너 실행을 위한 정적인 정의. 파일시스템 + 메타데이터로 구성된 스냅샷. 레지스트리 (Registry): Docker Hub, Harbor, GitHub Container Registry(GHCR) 등 이미지 저장소. 런타임 (Runtime): 컨테이너 실행을 담당하는 프로세스. Docker Engine, containerd, CRI-O 등이 있음. 네임스페이스: 프로세스, 네트워크, 파일 시스템 등을 격리하는 리눅스 커널 기능. cgroups: 자원 제한 및 관리 (CPU, 메모리, I/O 등) 를 위한 리눅스 커널 기능. OCI(Open Container Initiative): 이미지/런타임 표준 규격 정의 기관. 실무 구현 요소 Dockerfile: 컨테이너 이미지를 생성하기 위한 명세 파일. Docker Compose: 멀티 컨테이너 애플리케이션 정의 컨테이너 런타임 인터페이스 (CRI): Kubernetes 와 런타임 간 표준 인터페이스 네트워크: 가상 네트워크 인터페이스 및 브리지, NAT 등을 통한 네트워크 격리 및 연결. 네트워크 모드: bridge, host, overlay 네트워킹 스토리지: 컨테이너 파일 시스템 계층 관리 (예: OverlayFS). 볼륨 관리: 데이터 영속성 보장 리소스 제한: CPU, 메모리, I/O 제약 https://tse3.mm.bing.net/th?id=OIP.GfZfEbggQVRzCEqkrqdBZQHaEo&cb=iwc1&pid=Api
...