[Docker] Docker란?

Mineru·2022년 1월 28일

Docker란?

Docker는 LXC(Linux Container)를 활용한 소프트웨어로 프로세스가 하나 실행이 되면 내부 데이터들을 격리하듯이 컨테이너를 격리하는 기술이다.

도커는 컨테이너 라는 가상의 격리 환경을 만들기 위해 리눅스의 namespacecgroups이라는 기능을 사용한다.

  • namespace : 프로세스를 독립시켜주는 가상화 기술로, 각 컨테이너에서 실행된 프로세스가 시스템(user, file, network, hostname, process)으로부터 독립할 수 있게 해준다.
  • cgroups : 자원(cpu, memory, network, bandwidth)에 대한 제어를 가능하게 해주는 리눅스 커널 기능이다.

namespace와 cgroups

namespace

  • 프로세스 별로 리소스 사용을 분리한다.
  • VM에서는 각 게스트 별로 독립적인 공간을 제공하고 충돌하지 않도록 Hardware Resource 자체를 가상화 하는 반명 namespace는 Hardware Resource를 가상화 하지 않고, OS 자원을 가상화 한다.
    - pid namespace : 프로세스 격리 처리
    • net namespace : 네트워크 인터페이스
    • ipc namespace : IPC 자원에 대한 엑세스 관리
    • mnt namespace : 파일 시스템 포인트 관리
    • host namespace : hostname 할당

cgroups

  • Control Groups의 약자로 프로세스들이 사용할 수 있는 컴퓨팅 자원들을 제한하고 격리시킬 수 있는 리눅스 커널 기능이다.
  • cgroups를 사용하면 다음 자원들을 제한할 수 있다.
    - CPU
    • Memory
    • Network
    • Device
    • I/O
profile
Daily Coding

0개의 댓글