도커(Docker)는 현대적인 소프트웨어 개발 및 배포를 위한 오픈 소스 플랫폼으로, 애플리케이션을 격리된 환경에서 실행할 수 있도록 도와줍니다.큰 줄기로서의 Docker에 대한 설명은 DevOps 카테고리의 글을 참조하시기 바랍니다. 이번 글에서는 도커의 기본 개념과 원리에 대해 자세히 알아보겠습니다.
1. 컨테이너 개념과 가상화의 차이
컨테이너 개념은 가상화와 밀접한 관련이 있습니다. 하지만 컨테이너는 전통적인 가상화와는 다른 접근 방식을 채택합니다. 가상화는 운영 체제 위에 가상화된 환경을 생성하여 애플리케이션을 실행하는 반면, 컨테이너는 운영 체제 수준에서 애플리케이션을 격리된 환경에서 실행합니다. 이를 통해 애플리케이션 간의 상호 작용을 최소화하고, 효율적이고 경량화된 배포가 가능해집니다.
2. 도커 아키텍처
도커의 아키텍처는 다음과 같은 구성 요소로 이루어져 있습니다.
2.1 도커 엔진(Docker Engine)
도커 엔진은 도커의 핵심 구성 요소로, 컨테이너를 생성하고 실행하는 역할을 수행합니다. 도커 엔진은 클라이언트-서버 구조로 구성되어 있으며, 도커 CLI(Command Line Interface)를 통해 제어할 수 있습니다.
2.2 도커 이미지(Docker Image)
도커 이미지는 애플리케이션과 그 실행에 필요한 모든 종속성을 포함하는 템플릿입니다. 이미지는 읽기 전용이며, 여러 개의 컨테이너를 생성할 수 있습니다. 이미지는 도커 레지스트리에서 관리되며, 필요한 경우 직접 커스텀 이미지를 작성하여 사용할 수도 있습니다.
2.3 도커 컨테이너(Docker Container)
도커 컨테이너는 도커 이미지를 기반으로 생성된 실행 가능한 인스턴스입니다. 각 컨테이너는 격리된 환경에서 애플리케이션을 실행하며, 서로 독립적으로 동작합니다. 컨테이너는 가볍고 빠르게 생성되고 시작될 수 있으며, 확장성과 이식성이 용이합니다.
3. 도커 이미지와 컨테이너의 구조
도커 이미지는 여러 개의 레이어(layer)로 구성되어 있습니다. 각 레이어는 파일 시스템의 변경 사항을 저장하고, 상위 레이어에 대한 참조를 유지합니다. 이러한 레이어 구조는 이미지의 크기를 최소화하고, 이미지 간의 공유와 재사용을 가능하게 합니다. 컨테이너는 실행 가능한 이미지의 인스턴스이며, 컨테이너를 실행하면 이미지의 상태를 기반으로 파일 시스템을 읽기-쓰기 모드로 마운트합니다. 컨테이너는 독립된 파일 시스템 네임스페이스와 프로세스 네임스페이스를 제공받아 격리된 환경에서 애플리케이션을 실행합니다.
여기까지 도커의 기본 개념과 원리에 대해 살펴보았습니다. 컨테이너 개념과 가상화의 차이, 도커의 아키텍처, 도커 이미지와 컨테이너의 구조를 파악해보았습니다. 다음 글에서는 리눅스에 Docker를 설치하여 실습환경을 구성하고, docker cli에 대해서 살펴보겠습니다.
'DevOps > Docker' 카테고리의 다른 글
6. 도커 허브(Docker Hub) 사용법 (이미지 다운로드, 버전관리에 대해) (0) | 2023.07.18 |
---|---|
5. 도커 허브(Docker Hub) 사용법 (docker tag, docker push, 주의점) (0) | 2023.07.17 |
4. Docker 이미지 관리 실습 (Dockerfile의 구조, Dockerfile 작성, 커스텀 이미지 빌드 및 실행) (0) | 2023.07.15 |
3. Docker 이미지 관리 (Docker 이미지 소개, Dockerfile을 사용한 커스텀 이미지 빌드, Docker 이미지 레지스트리 활용) (0) | 2023.07.14 |
2. Ubuntu에 Docker 설치하기, Docker CLI 사용하기, Docker 네트워킹 및 데이터 볼륨 설정하기 (0) | 2023.07.13 |
댓글