Docker 란?
- 컨테이너를 만들고 관리하는 컨테이너 관련 툴
Container
- Standardized unit of software
- code를 실행하기 위한 code, dependency 의 패키지
Idea
- "누가" 실행하던지, "어디서" 실행하던지 상관없이 코드는 똑같은 환경에서 실행이 되어야한다.
- 개발환경, 프로덕션 환경 관련 없이.
- 팀과, 회사와 관련 없이
- 내 로컬 환경의 프로젝트별 종속성 관리라던지
Virtual Machines 과의 차이
Virtual Machines 사용 시 문제점
- 여러 버츄얼 머신에서 발생하는 오버헤드
- 새 프로젝트를 진행할 때 매번 새설치
- 메모리, CPU 등 하드 드라이브 공간 낭비
- 동일하게 복제되는 많은 것들이 존재
- 운영체제
- Virtual Machine 시스템에 필요한 파일들
장점
- 분리된 환경
- 환경별 구성 가능
- 안정적 공유, 재생산 가능
단점
- 중복 복제, 낭비되는 공간
- 호스트 시스템 위여서 퍼포먼스가 좋지 않음
- 이러한 버츄얼 머신이 여러 개일 경우 성능 점점 더 저하
- 재생산, 공유가 가능하지만 원하는 모든 시스템에 그 버츄얼 머신을 설정해야함
- 정확히 동일한 방식으로 구성해야하기 때문에 까다로움
- 공유할 수 있는 단일 구성 파일이 없음
- 프로덕션 환경에서 버츄얼 머신과 동일한 방식으로 프로덕션 머신을 구성해야함
- 혹은 프로덕션 머신에서 버츄얼 머신을 실행해도되지만, 너무나 성능이 낭비됨
그럼, Docker는?
- 하나의 머신에 여러개의 머신을 설치하지 않음
- 운영체제가 기본적으로 내재하고 있거나 컨테이너 에뮬레이트를 지원하는 내장 컨테이너를 활용, 도커가 이것을 작동하도록 처리
- 에뮬레이터(Emulator) : 한 시스템에서 다른 시스템을 복제
- 도커 엔진 실행
- 도커 설치될때 설정됨
- 실행된 도커 엔진을 기반으로 하여 컨테이너 가동
- 하나의 도구
- 도커 설치될때 설정됨
- 이 위에 격리된 컨테이너들이 올라감
- 부풀려진 운영체제, 추가 툴 설치되지 않음
- 컨테이너 안에 작은 운영체제 레이어가 있을 수 있지만 버츄얼 머신에 비해서는 매우 작다.
- 구성파일을 통해서 컨테이너를 구성, 이미지 빌드 가능
정리
Docker Container | Virtual Machines | |
영향 및 성능 | - OS에 적은 영향 - 빠르다 - 디스크 공간 사용이 적다 |
- OS에 큰 영향 - 느리다 - 디스크 공간 사용량이 높다 |
공유성 | Sharing, re-building, distribution 이 쉽다. | Sharing, re-building, distribution 가능하지만, 도커 컨테이너보다 과정이 어렵다. |
캡슐성 | - 전체 머신을 캡슐화하지 않고, "앱과 환경"을 캡슐화한다. | - "전체 머신"을 캡슐화한다. |
'Docker' 카테고리의 다른 글
[Docker] 이미지 캐시, 레이어 (image layer) (0) | 2022.05.12 |
---|---|
[Docker] image 생성 및 컨테이너 실행 (0) | 2022.05.02 |
[Docker] Dockerfile 을 사용한 image build (0) | 2022.05.01 |
[Docker] image, container (0) | 2022.05.01 |