Docker를 지탱하는 기술
chroot(change root)
- 프로세스의 새로운 루트 디렉터리를 만든다.
- 그리고 그 루트의 상위로 접근할 수 없게 하는 기술
- 즉 호스트 파일 시스템이 아닌 별도의 실행환경을 가지게 된다.
namespace
- 하나의 시스템(호스트 OS)에서 수행되지만
- 독립된 공간처럼 격리된 환경을 제공하는
- 리눅스 커널의 경량 프로세스 가상화 기술
cgroup(control group)
- 하나의 프로세스에 할당되는 물리적인 자원을 조정하는 기술
- CPU개수, CPU 사용률, 최대 할당 Memory 등
Overlay File System
- 공통적으로 사용하는 이미지는 Read-Only로 하나의 레이어를 공유하고
- Write 전용 레이어를 두어 컨테이너별로 사용하는 데이터 및 레이어를 따로 관리하는 기술
- 여러 컨테이너의 중복 레이어 발생을 막아 자원을 효율적으로 사용할 수 있다.
Docker가 지원하는 추가 기능
네트워크 가상화
- 물리적으로 존재하지 않는 LAN 카드를 가상화해 컨테이너별로 부여하고
- 컨테이너별로 독립적인 네트워크 통신을 할 수 있게 한다.
- 즉 컨테이너는 도커 엔진을 통해서 실제 물리 랜카드와 통신을 한다.
Volume
- 컨테이너 별로 영구 저장하고 싶은 데이터를 관리하는 기술
- 일반적으로 컨테이너는 휘발성이라 컨테이너 내부의 변경사항을 영구 저장할 수 없음
- 호스트 OS와 미리 연결된 디렉터리, 혹은 특정 공간을 이용해 컨테이너의 파일을 보관할 수 있다.