# 도커는 어떻게 컨테이너를 격리시킬까?
리눅스에서 쓰이는 Cgroup(control groups)과 네임스페이스(namespaces)에 대해서 알아야 한다.
다른 프로세스 사이에 벽을 만드는 리눅스 커널 기능들이다.
도커는 이것들을 이용해 컨테이너와 호스트에서 실행되는 프로세스를 격리시킨다.
- Cgroup : CPU, 메모리, Network Bandwith, HD i/o 등 프로세스 그룹의 시스템 리소스 사용량을 관리한다. 어떤 애플리케이션의 리소스 사용량이 많다면 그 애플리케이션을 Cgroup에 집어넣어서 CPU와 메모리 사용 제한 가능.
- Namespace : 하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술. 별개의 독립된 공간을 사용하는 것처럼 격리된 환경을 제공하는 경량 프로세스 가상화 기술.
# Host 머신의 운영체제가 리눅스가 아닐 때, 어떻게 리눅스 커널을 사용할 수 있을까?
docker 엔진은 리눅스 VM 위에서 구동된다.
dcoekr verison으로 도커 엔진이 구동되는 OS를 확인할 수 있다. OS/Arch: linux/amd64
$ docker version
Client:
Cloud integration: v1.0.22
Version: 20.10.11
API version: 1.41
Go version: go1.16.10
Git commit: dea9396
Built: Thu Nov 18 00:42:51 2021
OS/Arch: windows/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.11
API version: 1.41 (minimum version 1.12)
Go version: go1.16.9
Git commit: 847da18
Built: Thu Nov 18 00:35:39 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.12
GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc:
Version: 1.0.2
GitCommit: v1.0.2-0-g52b36a2
docker-init:
Version: 0.19.0
GitCommit: de40ad0
'Develop > DevOps' 카테고리의 다른 글
Vagrant 가 뭐지? (0) | 2022.05.15 |
---|---|
[docker] ERROR [internal] load metadata for docker.io/library/node:14.17.0-alpine (0) | 2021.12.28 |
[docker] 명령어 cheatsheet (0) | 2021.12.26 |
[jenkins] React 프로젝트 Docker + jenkins로 CI/CD (0) | 2021.12.25 |
[docker] 도커 네트워크 드라이버, Bridge Network ?? (0) | 2021.12.25 |
댓글