K-MOOC/DevOps

[Docker] Docker 이해(2) - 도커란?

h982 2021. 4. 15. 12:53

도커란?

Docker : 2013년 등장한 컨테이너 기반 가상화 도구, 일종의 소프트웨어를 소프트웨어 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 이는 실행 중인 환경에 관계없이 언제나 동일하게 실행될 것을 보증한다.

(위키백과)

 

- 도커 엔진을 통해 컨테이너를 관리

- 이식성을 위해 애플리케이션을 표준화 된 유닛으로 패키징

- 도커 이미지 : 라이브러리, 시스템 도구, 코드, 런타임 등 실행에 필요한 파일

- 도커 컨테이너 : 도커 이미지가 실행된 인스턴스

 

 

 

 

왜 도커인가?

도커를 사용하는 이유

 

- 애플리케이션 운영 표준화

- 지속적 배포/전달 및 안정적 서비스 제공 속도 증대

- 서비스 제공을 위한 노력 감소, 자원 사용률 증대

- 비용 절감의 효과

 

 

도커의 구조

 

도커의 구조

 

도커 컨테이너 구조

 

도커 컨테이너는 Union File System을 기반으로 동작한다.

 

도커 이미지는 Union File System으로 오버레이되는 복수의 레이어로 구현된다. 도커 컨테이너는 이미지로부터 생성되는 인스턴스이다. 하나의 이미지로부터 여러 개의 컨테이너를 생성할 수 있다. Union File System의 특성에  따라 하위 레이어는  읽기 전용이며, CoW 전략에  의해  쓰기 작업은  상위 레이어로 복사해서 이루어지기 때문에 하나의 이미지로부터 복수의 컨테이너가 실행되어도 문제되지 않는다.

 

도커 컨테이너의 레이어 구조는 컨테이너 레이어와 이미지 레이어로 분류할 수 있다.

 

- 컨테이너 레이어

  - 쓰기 가능한 레이어

  - 각 컨테이너 마다 최상단 레이어에 생성되어 컨테이너마다 자신만의 상태를 가질 수 있게 해준다.

  - 컨테이너가 생성된 후 모든 변경작업이 이 레이어에서 이루어진다.

 

- 이미지 레이어

  - 읽기 전용 레이어

  - 다른 컨테이너와 공유할 수 있다.

 

 

도커의 기반 기술

 

- NameSpace ( 리눅스 커널, 컨테이너, 격리된 실행환경 생성)

  - PID(Process ID) : 프로세스 격리

  - NET(Networking) : 네트워크 인터페이스 관리 ( IP, Router, ...)

  - IPC(InterProcess Communication) : 공유 통신 자원 관리

  - MNT(Mount) : 파일시스템 마운트 포인트 관리

  - UTS(Unix Time Sharing) : 호스트명, 도메인명 관리

 

- cgroups (control groups)

  - 자원의 할당 관리

  - 프로세스 그룹 별로 자원의 사용을 제한 ( CPU, Memory 사용 제한)

 

- Union File System

  - 가볍고 빠른 읽기 전용 레이어 사용