데이터 엔지니어링/Docker

[Docker] Docker Daemon (dockerd)

pythaac 2022. 7. 14. 13:37

https://iximiuz.com/en/posts/implementing-container-runtime-shim/

 

Implementing Container Runtime Shim: runc

What is a container runtime shim? Why the shim is needed? How to use OCI container runtime (runc) in command line and from code.

iximiuz.com

 

구조

https://iximiuz.com/en/posts/implementing-container-runtime-shim/

 

  • dockerd
    - Container Engine
    • 개발자 경험에 집중
    • High-level task 처리
      - login / build / inspect / attach
    • Swarm과 같은 orchestration 지원
      - Docker swam : docker engine의 cluster

https://docs.docker.com/engine/swarm/

 

Swarm mode overview

 

docs.docker.com

  • containerd
    - Container Manager
    • High-level runtime
    • container runtime을 실행
    • 네트워크 관리
  • containerd-shim
    - shim : 틈을 메우는 나무/쇠
    • low-level runtime에 대한 abstraction 제공
    • container가 살아있을 때까지 살아있음
    • container의 stdin/stdout 등 stream 관리
      - docker attach
  • runc
    - OCI runtime
    • container 생성/실행을 위한 command-line tool
    • container 프로세스를 실행(fork/exec) 후 종료됨
  • container
    • 평범한(regular) Linux process
    • dockerd보다 오래 살아있음
    • virtualized OS 환경에서 동작
      - File System / Network / PID / UID / namespaces / veth / bridge network devices

 


 

  • Engine과 Runtime의 차이
    • Engine
      - Runtime 안에 포함됨
      - 실질적인 low-level 동작의 주체
    • Runtime
      - Engine을 포함
      - API를 통해 기능을 제공 (Engine을 활용하여 기능 수행)

https://medium.com/@misbahulalam/uncover-the-javascript-engine-vs-runtime-6556ef449634

 

Uncover the JavaScript: Engine vs Runtime

We always put or link some JavaScript code in our HTML page and get it executed. But very rarely we think about its execution process. To…

medium.com