테키테크 TEKITECH

Docker 이해하기 본문

Tech/Ops

Docker 이해하기

TEKI 2021. 9. 2. 15:33

목차


  • 1. Docker?
  • 2. Core Concepts 
    • 도커 파일 Docker File
    • 도커 이미지 Docker Image
    • 도커 컨테이너 Docker Container
    • 도커 엔진 Docker Engine
    • 도커 클라이언트 Docker Client
    • 도커 데몬 Docker Daemon
    • 도커 호스트 운영체제 Docker Host OS
    • 도커 저장소 Docker Registry
    • 도커 허브 Docker Hub
    • 도커 스웜 Docker Swarm

1. Docker?

컨테이너 Container

다양한 가상화 방식 중 도커Docker는 컨테이너Container 형태이다. 리눅스 컨테이너(LXC: Linux Container)를 기반으로 만들어졌으며, PyCon 2013에서 도커가 처음 소개된 이후 컨테이너형 가상화 방식이 널리 알려졌다.
→ 「The Future of Linux Contatior」 - by Solomon Kykes

Google의 Go언어

도커는 속도가 빠른 Go로 만들어져 하드웨어를 제어하는 속도가 빠른 편이다. 결과적으로 컨테이너를 구축하고 운용하는 속도가 빨라졌다.

쿠버네티스 Kubernetes

오케스트레이션 서버Orchestration Server에서 도커와 쿠버네티스Kubernetes는 한 쌍이다. 도커의 가볍고 빠른 컨테이너와 이 컨테이너들을 운용하는 쿠버네티스를 통해 서버 관리가 매우 수월해지기 때문이다. 도커는 쉽게 설치해서 사용할 수 있기 때문에 로컬에서 도커를 사용해 다양한 개발 환경을 구축할 때에도 도움이 된다.

 

2. Core Concepts

Docker File - Docker Image - Docker Container

[1] 도커 파일 Docker File

  • 도커 이미지Docker Image를 만들기 위해 사용하는 명령 파일
  • 패키지, 의존성, 소스코드, 스크립트 등을 하나의 파일에 기록
  • 도커 이미지는 수정할 수 없기 때문에 도커 파일을 수정해서 새로운 이미지를 생성

 

[2] 도커 이미지 Docker Image

  • 도커 컨테이너Docker Container를 만드는 이미지
  • 도커 컨테이너 실행에 필요한 파일, 설정값 등을 포함하고 있으며 수정 불가 (immutable)

 

   ✏️  도커 이미지 업데이트 Flow

  1. 레지스트리에서 수정할 도커 이미지 다운로드
  2. 이미지를 도커 파일로 변환
  3. 도커 파일 수정 (새로운 프로그램 적용, 환경설정 변경, 등)
  4. 도커 파일을 빌드해서 새로운 도커 이미지 생성

 

[3] 도커 컨테이너 Docker Container

  • Application과 그 application을 구동할 수 있는 환경(시스템 리소스, 네트워크 등)을 사용할 수 있는 독립된 공간
  • 하나의 레지스트리에 하나 이상의 도커 컨테이너를 두고 사용
  • 하나 또는 둘 이상의 컨테이너로 서비스 구성

 

[4] 도커 엔진 Docker Engine

  • 서버에 도커를 적용하기 위해 설치하는 실제 서비스

 

Docker Client-Server RESTful API Request Flow

[5] 도커 클라이언트 Docker Client

  • 도커는 RESTful API로 소통하는 Client-Server 체계
  • Client가 사용자가 요청하는 build, run, pull, push 등의 작업을 받아 HTTP API Request로 변환하여 Server에 요청

 

[6] 도커 데몬 Docker Daemon

  • 도커 클라이언트가 전달한 요청을 수행

 

Docker Architecture

[7] 도커 호스트 운영체제 Docker Host OS

  • 도커를 올린 실제 서버
  • 다양한 가상화 방식 중 컨테이너형 가상화 개념에서의 호스트 운영체제
    → VM은 가상환경마다 별도로 Guest OS를 운영하는 반면, 도커는 컨테이너를 Host OS 위에서 운영
    → 사용자 입장에서 도커의 컨테이너는 호스트 운영체제와 격리된 가상머신
    → 호스트 운영체제 입장에서 도커의 컨테이너는 프로세스

 

[8] 도커 레지스트리 Docker Registry

  • 도커 내부에서 도커 이미지들을 보관하는 저장소
  • 클라우드 호스팅 업체에서도 컨테이너 레지스트리Container Registry 제공 (GCR, ECR, 등)

 

[9] 도커 허브 Docker Hub

  • 도커에서 운영하는 도커 레지스트리
  • Git처럼 로그인 후 도커 이미지를 업로드(push)/다운로드(pull)하여 사용할 수 있다.

도커 파일 및 이미지 생성 Flow

 

[10] 도커 스웜 Docker Swarm

  • 여러 개의 도커 컨테이너에 대해 batch, load balancing, 장애 복구 등 관리를 위한 컨테이너 오케스트레이션 툴
  • 쿠버네티스, 아파치 메소스 등 비슷한 역할을 하는 컨테이너 오케스트레이션 툴 존재

 


 

※ 참고 자료와 이미지 출처 ※

 

반응형
Comments