시간나는대로 틈틈히 정리 합시다~~!!!

[Docker] 기본 개념 본문

IT

[Docker] 기본 개념

열심히 정리하자!! 2021. 6. 7. 23:45
반응형

1. 도커란?

 

1) 의미

- 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트

- 보통 도커 엔진이라는 의미로 더 많이 쓰이며 도커 엔진은 컨테이너를 생성하고 관리하는 주체이다.

 

2) 관련 프로젝트

- 도커 컴포즈(Docker Compose)

- 레지스트리(Private Registry)

- 도커 허브(Docker Hub)

- Docker for Desktop

 

3) 가상 머신과 도커 컨테이너 차이

가상 머신 도커 컨테이너
App A App B App A App B
Binarys/Librarys Binarys/Librarys Binarys/Librarys Binarys/Librarys
Guest OS Guest OS Docker Engine
Hypervisor
Host OS Host OS
Server Server

 

4) 주요 항목 설명

항목 설명
Host OS 서버를 부팅할 때 실행되는 운영체제.
Hypervisor 가상머신(VM, Virtual Machine)을 생성하고 구동하는 소프트웨어.
Guest OS 하이퍼바이저에 의해 생성되고 관리되는 운영체제.
각각 Guest OS는 서로 완전히 독립된 공간과 시스템 자원을 할당 받음.
Docker Engine 컨테이너를 생성하고 관리하는 주체.

 

5) 도커와 가상머신의 장/단점

구분 장점 단점
Virtual Machine - 완벽한 운영체제를 생성할 수 있음 - 각종 시스템 자원 가상화 및 독립된 공간 생성 작업이 하이퍼바이저를 반드시 거치기 때문에 성능 손실 발생.
- Guest 운영체제를 사용하기 위한 라이브러리, 커널 등을 모두 포함하기 때문에 이미지 크기가 큼.
- 수 기가바이트에 달하는 가상 머신 이미지를 애플리케이션으로 배포하기에 부담스러움.
Docker - 리눅스 자체기능(chroot, namespace, cgroup)을 사용하여 프로세스 단위의 격리 환경을 제공하기 때문에 성능 손실이 거의 없음.
- 호스트의 커널 공유 및 애플리케이션 구동에 필요한 라이브러리 및 실행 파일만 존재하기 때문에 이미지 용량이 가상 머신에 비해 매우 적음
- 이미지 용량이 적기 때문에 가상 머신에 비해 배포 시간이 빠름.
- 가상화된 공간을 사용할 때의 성능 손실도 거의 없음.
 

 

6) 도커의 가장 큰 장점

- 애플리케이션의 개발과 배포가 편함

- 여러 애플리케이션의 독립성과 확장성이 높음

 

7) 모놀리스와 마이크로 서비스 차이

모놀리스(Monolith) 마이크로서비스(Micro Service)
- 소프트웨어의 여러 모듈이 상호 작용하는 로직을 하나의 프로그램 내에서 구동 시키는 방식.
- 서비스의 기능이 복잡해지고 거대해질수록 확장성과 유연성이 줄어듬.
- 모놀리스의 단첨을 대체하기 위해 나온 개념.
- 여러 모듈을 독립된 형태로 구성하기 때문에 언어에 종속되지 않고 변화에 빠르에 대응할 수 있고, 각 모듈의 관리가 쉬워짐.

 

 

2. 기본 단위

 

1) 도커 이미지

- 가상머신에서 사용되는 iso 파일과 비슷한 개념

- 컨테이너를 생성하고 실행 할 때 읽기 전용으로 사용

- 형태 1 => gitlab/gitlab-ce:latest

gitlab / gitlab-ce latest
저장소 이름   이미지 이름 태그

- 형태 2 => gitlab-ce:latest

gitlab-ce latest
저장소 이름 태그

- 항목 설명

항목 설명
저장소 이름 - 이미지가 저장된 장소
- 보통 명시되지 않은 경우 도커 허브 혹은 공식 이미지를 뜻함
- 필수 값은 아님
- 저장소 이름 앞에 접두어(docker.io/, gcr.io)를 붙여 어느 저장소인지 추가로 적기도 함
이미지 이름 - 해당 이미지가 하는 역할
- 필수 값
태그 - 이미지의 버전

 

 

2) 도커 컨테이너

- 다양한 이미지(OS, DB, 웹서버, 빅데이터 분석 도구 등)로 해당 이미지의 목적에 맞도록 파일 시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간을 생성한 것.

- 이미지를 읽기 전용으로 사용하며 이미지에서 변경된 사항만 컨테이너 계층에 저장하므로 무엇을 하든지 원래 이미지는 아무런 영향을 받지 않음

- 동일한 이미지로 생성한 다른 컨테이너들과도 아무런 영향을 주고받지 않음

 

반응형
Comments