정리용/Docker

[Docker] 1.1 Docker 개념

hee-ya07 2025. 2. 21. 17:12

0. 격리를 위한 가상화 (VM vs Container)

:: 환경에 따라 VM or Container로 구분

출처 : https://wnsgml972.github.io/setting/2020/07/20/docker/

구분 VM (Virtual Machine) Container
환경 정의 Guest OS + Bins/Libs + App B Bins/Libs + App B
특징 OS 레벨 독립적 애플리케이션 구동 환경 Bins/Libs 레벨 독립적 어플리케이션 구동 환경
소모 리소스 리소스 소모가 크고 느리다. 리소스 소모가 적어 가볍고 빠르다
최대  1 OS 내 3 VM 정도 ..? 1 OS 내 1000 Container 가능
  • 컨테이너
    :: 격리된 공간에서 프로세스가 동작하는 기술 (Isolated Process in Userspace)

1. Docker ?

:: 컨테이너화 기술을 활용한 개발 및 배포 자동화 도구

:: 애플리케이션을 실행할 수 있는 가벼운 환경을 제공 + 의존에 대한 일관성을 제공하여 어디서나 동일한 실행을 보장

:: 애플리케이션을 "컨테이너"라는 가상화된 환경에서 실행 -> OS 의존성을 줄임

  1. Docker는 Linux Container 구동을 위해 Image 생성
  2. Docker는 Container를 구동하는 책임을 가짐

1.1 Docker의 구성 -간략

구성 요소 설명
1) Docker Image - Docker의 격리 단위
- 실행에 필요한 모든 파일 시스템과 설정을 포함하는 읽기 전용 템플릿
2) Dockerfile - Docker 이미지를 생성하기 위한 스크립트 파일
- 이미지에 포함될 파일, 애플리케이션, 설정 등을 정의
3) Docker Container - 실행 중인 Docker 이미지
- 격리된 실행 환경을 제공하는 동적 상태
4) Docker Compose - 여러 컨테이너를 정의하고 실행할 수 있는 도구
- 여러 서비스를 동시에 관리
5) Docker Hub - Docker 이미지를 공유하고 배포하는 클라우드 기반 플랫폼

1.2 Docker의 구성 - 상세

1) Docker Image

  • 정의
    :: Docker의 격리 단위
    :: 컨테이너를 실행할 수 있는 모든 파일 시스템과 설정을 포함하는 읽기 전용 템플릿

  • 구성
    :: Docker 이미지는 여러 레이어로 구성 -> 이를 바탕으로 컨테이너가 실행

    :: Bins/Libs 와 App 집합
    • App : 구동시킬 앱이 담겨져있다 (예, Spring Boot)
    • Bins/Libs : 앱 구동시킬때 필요한 라이브러리, 실행파일, 환경변수

  • 관리 주체
    :: Docker Hub와 같은 중앙 레지스트리에서 공유하거나, 로컬에서 관리

 

2) Dockerfile

  • 정의
    :: Docker 격리 정의 (Instruction)
    :: Docker 이미지를 생성하기 위한 스크립트 파일 
    :: 애플리케이션에 대해 어떤 방식으로 설치될지에 대한 명령어들이 포함

  • 역할
    :: 이미지 생성 규칙 - 어떤 Bins/Libs 와 어떤 App 을 포장할지 
    :: 특정 애플리케이션을 실행할 수 있는 재사용 가능한 이미지 생성 가능

3) Docker Container

  • 정의
    :: Docker 격리 동작
    :: 애플리케이션 및 그에 필요한 라이브러리, 구성 파일, 필요한 설정 등이 포함된 격리된 실행 환경
    :: 실행 중인 이미지(동적인 상태를 의미)

  • 역할
    :: 운영체제의 가상화를 활용해 애플리케이션을 호스트 OS와 독립적인 환경에서 실행을 지원

4) Docker Compose

  • 정의
    :: Dockerfile 로 정의한 개별 Docker 이미지 집합
    :: 여러 컨테이너를 정의하고 실행할 수 있는 도구 -> 다중 컨테이너 실행 도구

  • 역할
    :: 여러 개의 서비스를 필요로 하는 애플리케이션을 여러 컨테이너로 구성할 때 유용
    :: Multiple Docker 컨테이너 구동

    :: Docker-compose.yml 파일을 사용하여 각 서비스의 설정을 정의 및 실행, 중지

5) Docker Engine

  • 정의
    :: Docker 이미지를 구동 및 관리하기위한 엔진

  • 구성
    :: API + CLI + Docker Daemon

  • 역할
    :: Docker Engine 위에 Image를 올리고 Run 구동 시 독립적인 Docker Container 실행 

 

6) Docker Hub

:: Docker 이미지를 공유하고 배포하는 클라우드 기반 플랫폼

 


심화 내용 - 질의

2025.02.21 - [정리용/Docker] - [Docker] 1.1.1 Docker 질문

 

[Docker] 1.1.1 Docker 질문

*. 심화 내용*. 1 Docker는 왜 항상 Linux 명령어를 사용하나?더보기Docker는 기본적으로 Linux 환경에서의 컨테이너화를 목표로 설계됨=> So, Docker 자체가 Linux의 네이티브 시스템 기능을 사용하여 관리

hee-ya07.tistory.com


 

참조

ASAC 수업자료