# Docker 개요

- Author: @smithsolution
- Published: 2025-02-27
- Updated: 2025-03-16
- Source: http://blex.me/@smithsolution/docker-%EA%B0%9C%EC%9A%94
- Tags: docker, ci, cd

---

## 🐋도커란?
Docker는 애플리케이션을 개발, 배포 및 실행하기 위한 오픈 소스 플랫폼입니다. 이 플랫폼은 애플리케이션을 컨테이너라는 표준화된 유닛으로 패키징하여, 개발 환경과 운영 환경 간의 일관성을 제공합니다

## 🐋주요 특징
- 컨테이너 기술: Docker는 컨테이너를 사용하여 애플리케이션과 그 종속성을 격리된 환경에서 실행합니다.
-  이식성: 컨테이너화된 애플리케이션은 다양한 환경에서 일관되게 실행될 수 있어 이식성이 뛰어납니다.
- 리소스 효율성: 컨테이너는 호스트 운영 체제의 리소스를 공유하며, 별도의 게스트 OS를 필요로 하지 않아 가볍고 빠릅니다.
-  빠른 배포: Docker를 사용하면 애플리케이션의 개발, 테스트, 배포 과정을 간소화하고 가속화할 수 있습니다.

## 🐋Docker 아키텍처
Docker는 클라이언트-서버 아키텍처를 사용한다.
![](https://static.blex.me/images/content/2025/3/6/20253611_EUP7ceD7MGvKwyA1NJQr.png)
주요 구성요소는 위와 같이 세가지로 나뉜다.
(위 사진은 도커 공식 사이트에서 아키텍처를 시각적으료 표현한 것인데, 항상 도커 컨테이너를 머리속으로 추상화하면서 위 그림을 떠올리곤 하는데 곱씹을수록? 유용한 자료로가 생각된다)
도커는 Client-Server 아키텍처를 사용하는데,
클라이언트는 ""도커 컨테이너를 구축, 실행 및 배포하는 무거운 작업을 수행하는"" 도커 데몬과 통신한다.
![](https://static.blex.me/images/content/2025/3/6/20253611_2i7UeKF7rLXA2p1hXsNF.png)
도커 클라이언트와 데몬은 동일한 시스템 내에서 실행될 수 있고, 또는 도커 클라이언트를 원격 도커 데몬에 연결할 수도 있다. 
![](https://static.blex.me/images/content/2025/3/6/20253611_k6C1eITj3gBN5qxwDLng.png)
도커 클라이언트와 데몬은 **UNIX 소켓** 또는 **네트워크 인터페이스**를 통해 REST API를 사용하여 통신한다. 그리고 도커 클라이언트는 ""도커 컴포즈""로 이를 통해 컨테이너 세트로 구성된 애플리케이션으로 작업할 수 있다.

이쯤에서 도커관련 용어들을 정리하자.
1. Docker Daemon: Docker API요청을 처리하고 이미지, 컨테이너, 네트워크, 볼륨 등을 관리한다.
2. Docker Client: 사용자가 Docker 명령어를 실행할 수 있는 인터페이스를 제공한다.
3. Docker 엔진: 호스트 시스템에서 실행되는 핵심 소프트웨어로, 컨테이너 생성 및 관리를 담당한다.

현재로서는 추상화/가상화 관련된 다양한 용어들이 나와서 초심자 입장에서는 어렵게 느껴질 거이다.
하지만 이를 통해 아래와 같은 분야에서 요긴하게 써먹을 수 있다.

## 🐋사용사례
1. 마이크로서비스 아키텍처(MS Architecture): 분산 애플리케이션 구축 및 확장에 사용된다.
2. 지속적 통합 및 배포(CI/CD): 표준화된 환경을 제공하여 개발 및 베포 프로세스를 개선한다.
3. 데이터 처리: 빅데이터 처리 시스템 구축에 활용된다.
