1. Docker Engine (도커 엔진)
Docker 엔진은 Docker의 핵심 구성 요소로, 사용자의 명령을 실행하는 중요한 역할을 한다. Docker 엔진의 주요 특징은 다음과 같다:
클라이언트-서버 구조: Docker에서 사용자가 명령어를 입력하면, 이는 클라이언트를 통해 Docker 데몬(서버)에 전달되어 실행된다. 이 구조는 사용자가 컴퓨터에 명령을 내리는 과정과 유사하다.
데몬 프로세스: Docker에서 핵심적인 객체를 생성하고 관리하는 역할을 한다. Docker 데몬이 없으면 Docker 자체가 존재할 수 없다.
REST API: 다양한 애플리케이션들이 Docker와 통신할 수 있는 방법을 제공한다. 예를 들어, 다른 프로그램이 Docker에게 이미지 실행을 요청할 때 사용되는 통신 방식이다.
CLI (Command Line Interface): 사용자가 Docker와 소통하는 데 사용되는 도구다. CLI는 명령어를 입력하는 창구 역할을 한다.
이러한 구성 요소들은 Docker를 효율적이고 유연하게 만드는 데 기여한다. Docker 엔진 덕분에 사용자는 컨테이너를 쉽고 빠르게 생성하고 관리할 수 있다.
2. Docker Image (도커 이미지)
도커 이미지는 애플리케이션 실행을 위한 레시피
나 설계도
이다.
코드의 템플릿
: 이미지는 애플리케이션을 실행하기 위해 필요한 모든 정보와 설정을 포함한다. 이 이미지를 기반으로 컨테이너를 생성할 수 있다.
다양한 구성
: 예를 들어, 웹 서버가 필요한 애플리케이션의 경우, 이미지에 웹 서버 설정, 필요한 라이브러리, 코드 등이 포함된다.
계층화된 구조
: 변경사항이 발생했을 때, 전체 이미지를 새로 만들 필요 없이 변경된 부분만 업데이트할 수 있어 효율적이다.
이러한 특징들 덕분에 도커 이미지는 애플리케이션 배포 및 관리를 훨씬 간편하고 효율적으로 만들어준다.
3. Docker Container (도커 컨테이너)
도커 컨테이너는 이미지를 실체화시켜 실제로 실행되는 환경이다. 이는 이미지의 활성화
개념을 포함한다. 이미지는 정지된 상태와 같지만, 컨테이너는 이를 실행 중인 상태로 만든다. 따라서 컨테이너는 이미지에 생명을 불어넣는 역할을 한다.
또한, 컨테이너는 독립적인 실행 환경
을 제공한다. 각 컨테이너는 자체적인 환경을 가지고 있어, 다른 컨테이너와는 격리되어 동작한다. 이로 인해 서로 다른 컨테이너들이 서로에게 영향을 주지 않으며, 각각 독립적으로 작업을 수행한다. 이것은 마치 서로 다른 방에서 각각 독립적으로 작동하는 기기들과 유사하다.
4. Docker Registry / Hub (도커 레지스트리 / 허브)
도커 레지스트리는 이미지를 저장하고 공유하는 곳이다. 이는 도서관과 유사한 역할을 한다고 볼 수 있다.
공유의 중심: 도커 레지스트리는 이미지를 안전하게 보관하며, 필요할 때 불러올 수 있는 기능을 제공한다. 또한, 다른 사용자들과 이미지를 공유하는 플랫폼 역할을 한다.
Docker Hub
: Docker Hub는 공개된 도커 레지스트리로, 개발자들이 이미지를 업로드하고 다운로드할 수 있는 곳이다. 많은 표준 이미지들이 이미 Docker Hub에 저장되어 있어, 사용자들이 쉽게 접근하고 사용할 수 있다.
이러한 도커 레지스트리의 기능은 컨테이너 기반의 개발 환경에서 중요한 역할을 수행하며, 효율적인 이미지 관리와 배포를 가능하게 한다.