컨테이너
는 실행에 필요한 모든 파일을 포함한 전체 실행(runtime) 환경
에서 애플리케이션을 패키징
하고 격리
할 수 있는 기술이다.
→ 애플리케이션이 한 컴퓨팅 환경(개발, 테스트, 프로덕션 환경 등)에서 다른 컴퓨팅 환경으로
빠르고 안정적으로 실행될 수 있도록 코드와 모든 종속성을 패키징
하는 표준 소프트웨어 단위이다 !컨테이너
는 프로세스 단위
로 사용되어 일반적으로 단일 애플리케이션이나 서비스를 실행하기 때문에, 가벼운 프로세스 격리 환경을 제공해준다 !OS 레벨
의 가상화
를 통해 여러 컨테이너
가 Host OS 커널
을 공유하면서도 독립적인 환경을 유지할 수 있게 한다 !컨테이너
를 사용하면 이러한 환경 전체에서 애플리케이션을 구동 지원, 품질 검사, 큰 문제나 수정 없이 애플리케이션을 배포
할 수 있게 된다 !”누군가
특정 구성이 있는 환경
에서 노트북으로 애플리케이션을 개발하고 있는 상황이라고 가정해보자 ! 다른 개발자들의 구성은 약간 다를 수 있다. 현재 개발 중인 애플리케이션은 이 구성을 기반으로 특정 라이브러리, 종속성 및 파일에종속
되어 있다. 동시에 회사는자쳬 구성과 지원 파일 세트
로 표준화된 개발 및 프로덕션 환경을 갖추고 있다. 이때, 서버 환경을재구축
하는 부가적인 작업 없이 가능한 한로컬
에서 이러한 환경을에뮬레이션(한 시스템에서 다른 시스템으로 복제)
하려고 한다.”
격리된 환경에서 애플리케이션을 실행
하는 방법을 말한다.컨테이너
는 종속성, 필요한 라이브러리 및 바이너리와 함께 애플리케이션을 컨테이너 이미지
라고 하는 독립된 패키지로 패키지화하여 여러 컴퓨팅 환경에 쉽게 배포할 수 있다.
→ 즉, OS
레벨에서 애플리케이션 실행 환경을 격리함으로써 마치 다른 OS에서 동작
하는 것과 같은 가상 실행 환경
을 제공하는 기술이다 !컨테이너
는 기존 VM(Virtual Machine)
처럼 하드웨어
를 가상화
하는 개념이 아니라, OS 레벨
에서의 가상화
를 통해 구현된다 !