320x100
320x100

컨테이너

애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행될 수 있도록 코드와 모든 종속성을 패키징하는 표준 소프트웨어 단위

 

 

 

컨테이너화

OS 레벨에서 애플리케이션 실행 환경을 격리함으로써 다른 OS에서 동작하는 것과 같은 가상 실행 환경을 제공하는 기술

 

 

 

가상머신과 컨테이너의 차이

- 가상머신

하드웨어와 OS를 논리적으로 가상화하여 격리된 컴퓨팅 환경을 제공

 

- 컨테이너

호스트 OS에서 프로세스로 실행되며 자체적으로 격리된 파일 시스템과 네트워크 인터페이스 및 리소스를 가짐

 

 

 

 

컨테이너의 원리

- cgroup (control group)

프로세스 모음의 리소스 사용량 (CPU / 메모리 / 디스크 / 네트워크 등)을 제한 및 격리하는 리눅스 커널 기능

파일 시스템을 기반으로 동작하며, 특수한 파일 시스템에 디렉터리를 만들고 파일을 수정하는 방식으로 시스템 자원들을 설정하고 관리한다

=> 컨테이너에 대한 리소스를 제한하고 우선순위를 지정

 

- 네임스페이스

프로세스를 서로 격리하는 리눅스 커널 기능

LXC 및 도커 컨테이너의 핵심 원리

 

※ 네임스페이스의 종류

PID (프로세스 ID를 격리)

Network (IP / 포트 / 라우팅 테이블 등 네트워크 리소스를 격리)

User (프로세스 별 UID 및 GID 정보를 격리)

Mount (프로세스 별 마운트 되는 파일 시스템을 격리. 지정된 파일 시스템을 루트처럼 생각하여 동작)

IPC (프로세스 간 통신을 격리하여 다른 프로세스의 접근이나 제어를 방지)

UTS (호스트명이나 도메인명을 격리)

Time (시간을 격리)

cgroup (프로세스는 /proc/self/cgroup에 가상화된 새로운 cgroup 마운트를 가짐)

 

※ unshare

네임스페이스 생성 명령어

 

 

 

 

 

 

 

 

 

Reference

 

[Docker] 그래서 도커(Docker)랑 컨테이너(Container)가 뭐냐구요

도커(Docker), 컨테이너(Container)는 무엇일까요? 도커(Docker) 등장 배경과 컨테이너(Container) 환경의 발달 과정 그리고 기존 가상화 방식과 컨테이너(Container) 기반 가상화 방식의 차이점과 운영방식등

colevelup.tistory.com

 

리눅스 namespace 이해하기

본 글은 카카오 엔터프라이즈 글과 유튜브 영상을 보고 따라하며 단순히 정리한 글입니다. 개인적으로 다른 어떤 글보다 내부 원리를 이해하기 좋게 구성되어 있다고 생각하여 별도로 정리하게

velog.io

 

리눅스 NameSpace에 대해 알아보자

리눅스 네임스페이스란? 리눅스에서 프로세스를 격리 시킬 수 있는 가상화 기술입니다. cgroup은 자원의 양을 제한한다면 namespace는 자원의 종류를 제한합니다. 네임스페이스의 종류 종류 설명 PID

jaykos96.tistory.com

 

 

300x250
728x90