데이터 엔지니어링/Docker

[Docker] Docker란

pythaac 2022. 5. 9. 05:02

정의

  • 애플리케이션을 신속하게 구축, 테스트, 배포할 수 있는 소프트웨어 플랫폼
  • 컨테이너라는 표준화된 유닛으로 소프트웨어를 패키징
  • 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어 실행에 필요한 모든 것을 포함
  • Docker 사용시 환경에 구애받지 않고 애플리케이션을 신속하게 배포/확장하고 코드가 문제없이 실행됨을 보장

 

사용하는 이유

  • Docker는 DevOps 및 개발자에게 도움되도록 설계된 개방형 애플리케이션 개발 프레임워크
  • 개발자
    • Docker를 사용하여 경량의 휴대 가능한 자립형 컨테이너로 애플리케이션을 쉽게 빌드/패키징/배송/실행
    • 운영체제/배포 시스템 등을 걱정하지 않고 애플리케이션 코드에만 집중하면서 사용 가능
    • 오픈소스 컨테이너 애플리케이션 활용 가능
  • DevOps
    • 지속적인 통합(CI) 및 개발 도구 체인에 적합
    • 애플리케이션 배포/관리를 위한 시스템 아키텍처 내에서 필요한 제약/복잡성을 줄임
      - 애플리케이션이 실행되는 환경설정 등을 생략할 수 있음
    • Kubernetes와 같은 서비스를 통해 프로덕션에서 컨테이너화된 애플리케이션을 이동/실행 가능

 

Kubernetes

  • Docker 컨테이너 및 워크로드를 실행할 수 있는 오픈소스 오케스트레이션 시스템
  • 수백 개의 컨테이너 조정/확장/관리/예약
  • 여러 서버에 배포된 여러 컨테이너를 확장하기 위해 이동할 때 운영 복잡성 관리에 도움이 됨
  • 수요에 따라 빠르게 리소스 확장/축소
  • 컨테이너 상태를 지속적으로 프로비저닝/예약/삭제/모니터링

 

Docker 기본 사항

  • 핵심 개념은 2가지
    - 이미지
    - 컨테이너
  • Docker 이미지
    • 소프트웨어를 실행하는 데 필요한 모든 것을 포함
    • 코드
    • 런타임(JVM)
    • 드라이버
    • 도구
    • 스크립트
    • 라이브러리
    • 배포
  • Docker 컨테이너
    • 실행 중인 Docker 이미지 인스턴스

https://www.oracle.com/kr/cloud-native/container-registry/what-is-docker/

 

격리와 가상화

  • Docker 컨테이너의 특징 (namespace / cgroup)
    • 저수준 컨테이너 런타임 (Low-level Container Runtime) 
    • namespace
      • 자체 파일 시스템
      • 자체 네트워크 스택
      • 자체 프로세스 공간
    • cgroup
      • 컨테이너가 사용하는 CPU/메모리 등 리소스 사용량을 제한
  • 격리
    • 가상화와 달리 Host OS의 리소스를 분리
    • Host OS 위에 Guest OS를 제공 

 

유니온 파일 시스템

https://www.joinc.co.kr/w/man/12/docker/InfrastructureForDocker/storage

  • 하나의 이미지에서 하나 이상의 컨테이너를 실행
  • 컨테이너는 Read-only인 이미지에 대해 Read-Write인 변경사항을 따로 저장

 

Docker Registry

  • 수천 개의 Docker 이미지를 관리하는 것은 어려움
  • Docker Registry는 Docker 이미지를 저장/배포하는 표준 방법
  • 또한 리포지토리에 저장된 이미지의 액세스 제어/보안 개선

 

궁금했던 점

Container에 OS이미지가 추가되면 VM과 다른 게 있을까?
  • Docker Container는 리눅스 위에서만 동작한다고 함
  • Container에는 경량화 리눅스(Alpine)가 들어감
  • 이 때 커널은 포함되지 않고, Host OS와 다른 부분만 Container에 들어감

 

 

 

https://aws.amazon.com/ko/docker/

 

Docker란 무엇입니까? | AWS

Q: Docker로 어떤 작업을 할 수 있습니까? Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다. 이는 Doc

aws.amazon.com

https://www.oracle.com/kr/cloud-native/container-registry/what-is-docker/

https://www.samsungsds.com/kr/insights/docker.html

 

흔들리는 도커[Docker]의 위상 - OCI와 CRI 중심으로 재편되는 컨테이너 생태계

흔들리는 도커[Docker]의 위상 - OCI와 CRI 중심으로 재편되는 컨테이너 생태계

www.samsungsds.com

https://www.joinc.co.kr/w/man/12/docker/InfrastructureForDocker/storage

 

Docker Storage

블럭 디바이스 기반의 원격 스토리지 구성

www.joinc.co.kr

https://mosei.tistory.com/entry/Docker-Container%EC%9D%98-OS-vs-VM%EC%9D%98-OS?category=1144912 

 

[Docker] Container의 OS vs VM의 OS

docker를 사용하다가 생긴 의문. - Container 에서도 Guest OS를 사용하는데? docker는 VM을 사용할 때 생기는 쓸데없는 자원낭비(OS의 오버헤드) 를 줄이는데 획기적이다. docker를 쓰는 가장 큰 이유이다. do

mosei.tistory.com

https://bcho.tistory.com/805

 

Docker 소개

Docker란 무엇인가? 개념 잡기 Docker는 Linux 기반의 Container RunTime 오픈소스이다. 처음 개념을 잡기가 조금 어려운데, Virtual Machine과 상당히 유사한 기능을 가지면서, Virtual Machine보다 훨씬 가벼운..

bcho.tistory.com