출처 얄팍한 코딩사전

작업공간을 나누기 위해 일반적인 가상화를 진행하게 되면

자원 낭비가 심하다.

운영체가 필요해서 작업공간 분리를 위해 집안에 집을 만드는 꼴이 됨

 

 

 

 

 

 

https://www.youtube.com/watch?v=hWPv9LMlme8

도커의 같은 경우 

1. 운영체제를 따로 만들필요가 없다 - 자원을 아낄 수 있다.

 

2. 이식성이 좋다 - 각 컨테이너끼리 독립된 동작 환경을 구성한다

 

3. 상호운용성 - On-Premise 환경뿐 아니라 구글, 아마존, IBM등 다양한 벤더의 시세틈 및 클라우드 환경을 지원한다. ->

다양한 DevOps 오픈소스 SW와 연계가 가능하다.

 

 

도커의 주요 기능

1. 이미지 생성 및 관리

- 이미지는 컨테이너를 구동하기 위한 데이터

- 도커 명령어로 이미지 관리 가능

 

2. 이미지 공유

- 이미지 저장소 (레지스트리)에서 검색, 다운로드, 업로드 가능

- git으로 이미지 버전관리 가능

 

3. 컨테이너 동작

- 컨테이너 단위의 서버를 구동

- 운영체제 없이 구동

- 속도와 효율이 좋음

 

도커 동작을 위하여 사용되는 기술

1. 네임 스페이스

- 컨테이너라는 독립된 환경을 만들고

네임스페이스 설명
PID -PID와 프로세스를 분리
- 네임스페이스가 서로 다른 프로세스는 서로 접근 불가
Network - Namespace 별로 네트워크 장치, IP 주소, 포트 번호, 라우팅 테이블, 필터링 테이블 사용
UID - Namespace에 따라 독립적인 UID, GID 사용
Mount - Namespace에 따라 독립적인 마운트 포인트 사용

UTS - Namespace에 따라 독립적인 호스트네임 사용
IPC - Namespace에 따라 독립적인 IPC 오브젝트 사용

 

2. 그룹제어

- 도커의 각 컨테이너는 호스트의 리소스를 공유하여 사용된다. 이에 따라 자원이 불균형하게 할당되거나, 필요한 자원을 할당받지 못할 경우

Cgroup은 프로세스 또는 쓰레드를 그룹화하여 관리함.

이를 통해서 서로 다른 컨테이너에 영향을 막아주는 역할도 가능

 

3. 가상 브릿지와 가상 NIC (랜카드)

- 도커에서 생성한 컨테이너는 각각 가상의 NIC(Network Interface Card) 가 할당.

컨테이너의 네트워크를 Brigde로 기본설정을 할 경우 NIC는 docker0라는 가상 브릿지에 연결되어 컨테이너 끼리, 또는 호스트를 통해 외부 네트워크로 연결.

위의 호스트의 eth0는 물리적은 NIC를 말하며, docker0는 eth0와 연결된 가상의 브릿지 네트워크.

veth* (Virtual Ethernet은 컨테이너 별로 생성된 호스트의 가상의 NIC이며, 이는 컨테이너 eth0와 연결굄

 

4. 계층 파일 시스템

- 도커에서 기존 이미지에 추가작업을 하는 경우 변경된 부분만 복제 (COW방식 : Copy on Write)

- 도커의 이미지에는 운영체제와 미들웨어를 포함하고 있어서 생성할때 마다 기존 방식이라면 복사할때마다 자원 낭비가 발생하기 때문에  

그래서 변경된 것만 복제

 

- 도커 이미지 관리에 사용되는 파일 시스템 또는 라이브러리

Btrfs(B-Tree File System)

AUFS(Advanced multi-layered Unification File System)

Device Mappaer

OverlaysFS

 

+ Recent posts