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가 없다. |