Docker
7.1 Docker Container
컨테이너
app과 app 실행에 필요한 모든 dependency를 묶은 package
컨테이너 엔진
- 컨테이너 엔진에는 커널이 포함되는가? → 커널X
- 컨테이너 엔진은 OS 레벨에서의 가상화이다.
- 컨테이너 엔진은 OS 별로 제공된다.
VM vs Container
- 컨테이너는 VM보다 낮은 메모리 점유와, 빠른 부팅 시간을 가진다.
- VM은 각 VM마다 Guest OS가 존재하는 반면, 컨테이너는 OS를 공유한다.
Container Engine Architecture
- linux
namespace, cgroups, runC
dockered(사용자 명령 처리), containerd(컨테이너 이미지 받아옴), runC(컨테이너 ps 만듦)
호스트 OS와 컨테이너 OS가 다른 경우 하이퍼바이저 위에 컨테이너 설치해야 함
7.2 Docker Container Commands
Image vs Container
- 도커 컨테이너 이미지 = 도커 컨테이너를 만드는 일련의 명령어 역할을 하는 템플릿
image는 호스트 기계의 OS를 공유한다. (즉 절대 OS 커널을 가지고 있지 않음)
- 컨테이너 = 이미지의 실행 중인 인스턴스
- 기본적으로 하나의 컨테이너에는 하나의 프로세스만 실행되도록 이미지를 만드는 것이 권장
- 두 개 이상의 프로세스가 필요한 앱의 경우 여러 개의 컨테이너를 만들어 사용해야 함.
- 그러나 필요하다면 하나의 컨테이너에 여러 프로세스를 실행할 수 있음