-
[Docker] Docker란?프로젝트/아카이뷰 2024. 1. 25. 23:20
Docker 왜 궁금했을까 ❓
SSAFY 2학기 공통 프로젝트를 수행할 때, CI/CD를 구성하기 위해서는 Docker, Docker compose를 사용해야만 하는 것을 확인했다. 그래서 업무 생산성을 향상시키기 위해 CI/CD 환경 구성이 필수적이었고 이를 구현하기 위해 Docker에 대해 학습을 진행해보았다.
Docker란 ❓
Docker
- 프로세스 격리 기술을 이용하여 더 쉽게 컨테이너를 실행하고 관리할 수 있도록 도와주는 오픈소스 프로젝트
- 도커 엔진(Docker Engine) 혹은 도커에 관련된 모든 프로젝트를 지칭Docker Engine
컨테이너를 직접 관리하는 주체로서 컨테이너를 제어하고 다양한 기능을 제공
Docker의 작동 원리
- Docker의 공식 홈페이지에서 Docker의 동작 원리를 파악할 수 있다.
- 기존의 가상머신은 하이퍼바이저를 이용하여 여러개의 운영체제를 하나의 호스트에 생성해서 사용하는 방식이다.
- 이러한 방식은 하이퍼바이저를 반드시 거쳐야하기 때문에 일반 호스트에 비해 성능 저하가 발생한다.
- 또한, 게스트 운영체제를 사용하기 위해 라이브러리, 커널 등 구동을 위한 데이터들이 모두 포함되어 이미지로 만들어지기 때문에 이미지 크기가 커집니다.
- 이러한 단점을 보완하기 위해 나온 것이 Docker라고 할 수 있습니다.
- 도커 컨테이너는 리눅스 기능인 chroot, namespace, cgroup을 사용하여 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없다.
- 호스트의 커널을 공유하고 컨테이너의 어플리케이션 구동에 필요한 라이브러리 및 실행 파일만 존재하기 때문에 이미지의 크기 또한 상대적으로 작다.
Docker 구성 요소
Docker Client - 도커를 설치하고 명령어를 입력할 때 사용되는 Client를 뜻하며 build, pull, run 등의 명령어를 수행
Docker Host - DOCKER_HOST에서 컨테이너와 이미지를 관리하며 도커가 띄워져 있는 서버를 의미
Docker Daemon - Docker Engine을 지칭
Registry - Remote 이미지 저장소를 지칭하며 타인이 공유한 이미지를 pull 할 수 있으며 가져온 이미지를 run하면 container가 생성
'프로젝트 > 아카이뷰' 카테고리의 다른 글
[CI/CD] Jenkins란? (0) 2024.01.27 [Docker] Spring boot 프로젝트 배포 (0) 2024.01.26 [Spring boot] BooleanBuilder / BooleanExpression (0) 2024.01.24 [Spring boot] Query DSL 동적 쿼리 (0) 2024.01.23 [Spring boot] REST, REST API, RESTful (0) 2024.01.22