컨테이너

컨테이너 (Containers)

애플리케이션을 런타임 의존성과 함께 패키징하는 기술이에요. 이 페이지에서는 컨테이너와 컨테이너 이미지, 그리고 운영과 솔루션 개발에서의 사용법을 다뤄요.

컨테이너(container) 라는 단어는 과적재된(overloaded) 용어예요. 이 단어를 쓸 때마다 상대방이 같은 정의를 쓰는지 확인하세요.

실행하는 각 컨테이너는 반복 가능해요. 의존성을 포함하기 때문에 생기는 표준화 덕분에 어디에서 실행하든 같은 동작을 얻을 수 있죠.

컨테이너는 애플리케이션을 기반 호스트 인프라에서 분리해요. 이로 인해 다양한 클라우드나 OS 환경에서 배포하기가 쉬워져요.

Kubernetes 클러스터의 각 노드는 그 노드에 배정된 파드를 구성하는 컨테이너를 실행해요. 파드 안의 컨테이너들은 같은 노드에서 함께 위치하고(co-located) 함께 스케줄링돼요.

컨테이너 이미지 (Container images)

컨테이너 이미지는 애플리케이션을 실행하는 데 필요한 모든 것을 담은, 실행 가능한(ready-to-run) 소프트웨어 패키지예요. 코드와 필요한 런타임, 애플리케이션·시스템 라이브러리, 필수 설정들의 기본값이 들어 있죠.

컨테이너는 불변(immutable)이고 상태가 없도록 설계돼요. 이미 실행 중인 컨테이너의 코드를 바꾸면 안 돼요. 컨테이너화된 애플리케이션이 있고 변경하고 싶다면, 올바른 절차는 새 이미지를 빌드하는 거예요.

컨테이너 런타임 (Container runtimes)

컨테이너 런타임은 Kubernetes가 컨테이너를 효과적으로 실행할 수 있게 하는 기본 컴포넌트예요. Kubernetes 환경 안에서 컨테이너의 실행과 수명주기를 관리하는 책임을 져요.

Kubernetes는 containerd, CRI-O, 그리고 Kubernetes CRI(컨테이너 런타임 인터페이스)의 다른 구현체 같은 컨테이너 런타임을 지원해요.

보통 클러스터가 파드의 기본 컨테이너 런타임을 고르도록 둘 수 있어요. 클러스터에서 하나 이상의 컨테이너 런타임을 사용해야 한다면, 파드의 RuntimeClass를 지정해서 Kubernetes가 특정 컨테이너 런타임으로 그 컨테이너를 실행하게 할 수 있어요.

RuntimeClass를 사용해 같은 컨테이너 런타임이지만 다른 설정으로 서로 다른 파드를 실행할 수도 있어요.

더 알아보기