데이터 엔지니어링/Docker

[Docker] Docker 정리 (정의/아키텍쳐)

pythaac 2022. 7. 12. 13:51

https://docs.docker.com/get-started/overview/

 

Docker overview

 

docs.docker.com

 

정의

  • Docker
    • software deliver를 빠르게 해주는 플랫폼
    • software deliver
      - new feature가 적용되어 production으로 사용되는 과정

https://martinfowler.com/delivery.html

 

Software Delivery Guide

Articles on the path from finished programming to production.

martinfowler.com

  • Docker의 주요 keyword
    • image
    • container
  • Docker image
    • Docker container를 만들기 위한 instruction template
    • Dockerfile을 사용
  • Docker Container
    • Docker에서 사용되는 unit
    • application 실행에 필요한 모든 것을 담은 독립적인 환경
  • Conatiner의 특징
    • Lightweight
      - (A) 왜 lightweight한지?
    • host에 의존하지 않음
      - namespace를 통해 application으로 부터 infrastructure의 의존을 분리
      - (B) 어떻게 분리시키는지?
      - 따라서 개발 프로세스의 속도 향상
  • (A) 왜 lightweight한지?

https://pythaac.tistory.com/474

 

[클라우드] Container의 Lightweight (컨테이너가 가벼운 이유)

요약 Container에 포함되는 OS 이미지에는 kernel이 없으며, host kernel을 공유하여 사용하므로 가볍다. Container의 OS와 host의 kernel이 충분히 호환되면 동작하며, 그렇지 않을 경우 동작하지 않는다. 컨테

pythaac.tistory.com

 

아키텍쳐

  • Client-Server Architecture
    • Client (docker)
      • 사용자가 Docker와 상호작용하도록 해줌
      • REST API를 통해 Docker Daemon에 요청을 전송
    • Docker Daemon (dockerd)
      • Docker object를 관리
        - container / image / network / volume / plugin
    • Docker Registry
      • image를 저장
        - Dockerhub
  • 다음 명령어를 실행했을 때
    >> docker run -i -t ubuntu /bin/bash
    • client가 요청을 Docker Daemon에 전송
    • dockerd는 ubuntu image가 없으면 Docker registry에서 ubuntu image를 pull
    • dockerd에서
      - 컨테이너 생성
      - 컨테이너에 파일시스템 할당
      - 컨테이너의 네트워크 연결을 위한 network interface 생성
      - /bin/bash 실행