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