[Docker 입문] 컨테이너는 작은 운영체제다

[2024] 처음 시작하는 도커와 컨테이너 [천강민] 강의 수강 후 정리한 내용입니다.

 

 

처음 시작하는 도커와 컨테이너 강의 | 천강민 - 인프런

천강민 | , 실무에서, '도커 잘하네!' 라는 얘기가 나오도록 짧고 굵게![사진]실제 서비스 제공을 기반으로 고민하며 해결할 수 있다면, 이 강의는 수강하지 마세요.실무 요구사항을 해결해보는

www.inflearn.com

 

도커의 아키텍처

 

 

Docker는 클라이언트(Client), 도커 호스트(Docker Host), 레지스트리(Registry)로 구성된다.

 

일반적으로 클라이언트와 도커 호스트는 같은 PC에서 실행되며, 레지스트리는 외부에 위치할 수도 있다.

 

 

클라이언트 (Client)

 

  • 역할: 사용자가 Docker와 상호작용하는 인터페이스
  • 작동 방식:
    • 사용자가 docker run, docker build, docker pull 등의 명령어를 입력하면 Docker 클라이언트가 이를 처리
    • 클라이언트는 명령어를 Docker Daemon(도커 데몬)에 전달하며,
    • 일반적으로 REST API를 통해 도커 호스트와 통신
    • Docker CLI(Command Line Interface)가 클라이언트 역할을 수행

 

도커 호스트 (Docker Host)

 

  • 역할: Docker의 핵심 요소로, 컨테이너를 실제로 생성하고 관리하는 시스템
  • 구성 요소:
    • Docker Daemon(도커 데몬)
      • Docker의 핵심 엔진으로, 컨테이너 실행, 이미지 빌드, 네트워크 및 저장소 관리 등의 작업 수행
      • 클라이언트의 요청을 받아 컨테이너를 생성하고 관리
    • 컨테이너
      • 애플리케이션이 실행되는 격리된 환경
      • 필요한 라이브러리와 종속성을 포함하며, 도커 호스트에서 독립적으로 실행됨
    • 이미지
      • 컨테이너를 생성하기 위한 청사진(템플릿)
      • 특정 소프트웨어와 환경을 포함하며, 도커 호스트에서 이를 기반으로 컨테이너 실행

 

레지스트리 (Registry)

  • 역할: Docker 이미지를 저장하고 배포하는 중앙 저장소
  • 종류:
    • Docker Hub (퍼블릭 레지스트리)
      • 가장 많이 사용되는 공개 레지스트리
      • 수많은 공식 및 사용자 생성 Docker 이미지가 저장됨
      • docker pull nginx처럼 명령어를 입력하면, Docker Hub에서 해당 이미지를 다운로드
    • 프라이빗 레지스트리
      • 조직 또는 개인이 보안을 강화하거나 내부 이미지를 관리하기 위해 자체적으로 운영하는 레지스트리
      • 기업 환경에서는 민감한 데이터를 보호하기 위해 자체 Docker 레지스트리를 구축하는 경우가 많음

 

운영체제를 설치하는 과정

 

Docker의 동작 방식은 운영체제를 설치하는 과정과 유사하게 이해할 수 있다.

 

 

docker run : VirtualBox 또는 VMware를 이용하여 운영체제를 설치하는 과정과 유사

  • docker run 명령어를 실행하면 새로운 컨테이너가 생성되고 실행됨
  • 이는 마치 VirtualBox나 VMware를 사용해 운영체제를 설치하고 실행하는 것과 같은 개념

 

docker build : 운영체제 이미지를 다운로드하거나 직접 빌드하는 과정과 유사

  • 운영체제를 설치할 때, 기존의 ISO 이미지를 다운로드하여 설치할 수도 있지만, 직접 소스코드를 빌드하여 새로운 운영체제 환경을 만들 수도 있음
  • docker build는 소스코드를 기반으로 Docker 이미지를 생성하는 과정과 같음

 

docker pull운영체제 이미지를 다운로드하는 과정과 유사

  • docker pull을 사용하면 기존에 저장된 이미지를 다운로드할 수 있음
  • 이는 운영체제 ISO 파일을 다운로드하여 사용하는 것과 유사함
  • Docker 레지스트리는 운영체제 이미지를 다운로드할 수 있는 사이트(예: Ubuntu 공식 사이트)와 같은 역할을 함

 

즉, Docker에서 컨테이너를 생성하고 실행하는 과정은, 가상 머신에서 운영체제를 설치하고 실행하는 과정과 비슷하지만, 훨씬 가볍고 빠르다는 점이 핵심적인 차이점이다.

 

Docker 용어 정리

 

Registry : 우리가 만든 이미지를 저장하고 관리하는 공간

 

  • 예: Docker Hub, 프라이빗 레지스트리

 

Image애플리케이션과 필요한 종속성, 패키지 등이 포함된 실행 파일

 

  • 즉, 프로그램(소프트웨어) 자체
  • 컨테이너를 실행하기 위한 템플릿(청사진) 역할
  • 비유: 운영체제 설치 파일(ISO)

 

Container이미지를 기반으로 실행되는 프로세스

 

  • 즉, 실제 실행되는 애플리케이션
  • 격리된 환경에서 동작하며, 필요할 때 생성 및 삭제 가능
  • 비유: 실제 실행 중인 운영체제(Windows, Ubuntu 등)

 

Docker :  컨테이너를 쉽고 효율적으로 관리하는 도구

  • 사용자의 요청을 HTTP API를 통해 처리
  • 주요 기능
    • build → Dockerfile을 기반으로 이미지 생성
    • run → 생성된 이미지를 기반으로 컨테이너 실행
    • push → 생성한 이미지를 레지스트리에 저장 및 공유

 

즉, Docker는 이미지를 만들고, 실행하며, 공유할 수 있도록 돕는 플랫폼이다.