[Docker] Docker란?

Mineru·2022년 1월 28일
0

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개의 댓글