Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

SYDev

[마이크로서비스프로그래밍] Lecture06 - Docker Overview 본문

3학년 2학기 전공/마이크로서비스프로그래밍

[마이크로서비스프로그래밍] Lecture06 - Docker Overview

시데브 2024. 9. 17. 18:16
경희대학교 이성원 교수님의 마이크로서비스 프로그래밍 수업을 기반으로 정리한 글입니다.

 

Learning Objective

  • Docker overview
  • Basic commands
  • Practice
    • Install Docker Desktop on your Desktop
    • Test-drive of examples

 

Docker Overview

1. Docker Editions 

- @ OLD Days

  • Community Edition(CE) - 개인 개발자 & 소규모 팀에 적합
  • Enterprise Edition(EE) - 기업 개발자 & IT 에 적합

 

- @ Today

Reference: https://www.docker.com/pricing/

 

2. Docker Engine

  • container를 관리하는 지속성 있는 process
  • Docker의 core work - Building, Running & Distributing containers
  • running as a background service or daemon on the host

Reference: https://docs.docker.com/engine/docker-overview/

-> network: 배포한 software 사이에 통신

-> data volumes: software가 다뤄야 할 data 저장

  • daemon: background server?

 

3. Docker Daemon

  • Docker API requests를 수신하고 Docker objects를 관리(images, containers, networks, volumes, ...)함
  • docker services 관리를 위해 다른 daemons와 소통

 

4. Docker Client

  • Docker engine에 instructions를 입력하기 위해 사용하는 Command Line Interface(CLI)
  • 웹 구조의 client-server와 유사
  • Docker client는 docker engine에게 컨테이너/컨테이너화 작업을 수행하라 요청
    • ex) docker daemondㅔ registry로부터 image를 pull하라고 요청
  • Docker command는 docker API를 사용
  • docker client는 1개 이상의 daemon과 소통 가능

 

5. Docker Architecture

Reference: https://docs.docker.com/engine/docker-overview/

 

6. Docker Registries

  • Docker images 저장소
  • Public Registry
    • 누구든 사용 가능
    • docker hub & docker cloud
  • Private Registry
    • Docker Trusted Registry(DTR)
  • docker는 docker hub에서 image를 탐색하는 것을 default로 설정되어 있음
  • registry로부터 필요한 image를 pulling
    • docker pull
    • docker run
  • configured registry에 image를 pushing
    • docker push

 

7. Docker Ecosystem

Reference: Source: Combe, T., Martin, A. and Di Pietro, R., 2016. To Docker or Not to Docker: A Security Perspective. IEEE Cloud Computing, 3(5), pp.54-62.

 

8. Underlying Technologies

  • Written in Go language
  • Linux kernel의 이점을 취할 수 있음
    • Namespaces 
    • Control groups
    • Union file systems
    • Container format
  • Origin of Namespaces, Control groups -> unix 같은 multiple users가 함께 쓰는 os에서 충돌을 방지하기 위한 개념

Namespaces

  • Docker는 container라는 독립된 workspace를 만들기 위한 기술인 namespaces를 사용
  • container 실행 -> Docker는 container를 위한 namespaces의 set을 생성
  • namespaces는 독립된 layer를 제공
  • container의 각 aspect분리된 namespaces에서 각각 실행되고, 권한도 각 namespace에 제한된다.
pid namespace: Process Isolation(process id)
net namespace: Managing Network(networking)
ipc namespace: Managing access to IPC resources(interprocess communication)
mnt namespace: Managing filesystem mount points(mount)
uts namespace: Isolating kernel and version identifiers(unix timesharing system)


Reference: https://docs.docker.com/engine/docker-overview/

-> 이런 namespace를 container마다 독립적으로 만들어줌 -> container가 독립적인 machine처럼 동작할 수 있게 해줌

 

Control Groups(cgroups)

  • resource management의 역할
  • 각각의 container가 사용할 수 있는 hardware resource를 제한