프로젝트

일반

사용자정보

Docker » 이력 » 버전 1

이태훈, 2022/08/02 07:28

1 1 이태훈
h1. Docker
2
3
 * 컨테이너 기반의 오픈소스 가상화 플랫폼
4
 * 도커는 LXC(Linux Container)기반으로 시작하여 0.9 version에서는 자체 libcontainer기술을 사용하였고, 추후 runC기술에 합쳐졌다.
5
6
h2. 1) 컨테이너의 정의
7
8
 * 개별 소프트웨어의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행관경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술을 말합니다.
9
10
h2. 2) 가상머신과 컨테이너의 유사점
11
12
 * 호스트 운영체제에서 구동되며 그 바탕이 되는 하드웨어에 가상으로 액세스하는 Linux, Windows 등의 게스트 운영체제를 의미
13
 * 애플리케이션을 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경을 마련해 줌
14
15
h2. 3) Container 기반 가상화 vs Hypervisor 기반 가상화
16
17
||_. Hypervisor|_.Container|
18
|_.호스트 운영체제와 격리|=. 완전 격리|=.부분 격리|
19
|_.필요한 리소스|=.커널, CPU, 메모리, 스토리지 등|=.앱에 필요한 서비스만 포함|
20
|_.게스트 호환성|=.가상 머신내의 운영체제|=.호스트와 동일한 운영체제|
21
|_.배포|=.VM배포|=.Container배포|
22
23
24
h2. 4) Docker의 구조
25
26
|_. Client||_. Docker Host||_. Registry|
27
|=. Docker Build||=. Docker daemon||=. NGINX 등|
28
|=. Docker Pull||=. Images|||
29
|=. Docker Run||=. Containers|||
30
31
 * Client : user가 'docker run'등의 명령어를 입력하면 이를 Server쪽에 전송하고, Docker daemon이 수행한다.
32
 * Docker daemon : docker api 요청을 수신하고 image, container, network, volume과 같은 docker object를 관리한다. 다른 docker daemon과의 통신을 통해 서비스를 관리할 수 있다.
33
 * Docker Registry : Docker 이미지 저장소이다.
34
 * Image : 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있다. 공식 이미지의 경우 해당 이미지를 실행하기 위한 모든 것이 세팅되어 있다.
35
36
h2. 5) Docker의 특징
37
38
* 레이어 저장방식
39
40
 * Docker Image는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 용량이 크다. 이런 문제를 해결하기 귀해서 Layer라는 개념을 사용하고 유니온 파일 시스템을 이용하여 여러개의 레이어를 하나의 파일시스템으로 사용할 수 있게 해준다.
41
 * 컨테이너를 생성할 때도 레이어 방식을 사용하여 기존의 이미지 레이어 위에 읽기/쓰기(read-write) 레이어를 추가한다.
42
* Dockerfile
43
44
 * Docker는 image를 만들기 위해 Dockerfile이라는 파일에 자체 DSL(Domain-specific language) 언어를 이용하여 이미지 생성 과정을 적는다.
45
 * Application 실행에 필요한 과정들을 Dockerfile로 작성하여 관리할 수 있으며, 해당 Dockerfile을 보면서 이미지 생성과정을 알 수 있으므로 수정하기도 용이하다.
46
* Docker Hub
47
48
 * Docker hub를 통해 공개 이미지를 무료로 관리해준다. 공식 이미지를 직접 관리해주며, namespace가 없다.