Container 소개 및 기초 개념

JiwonChoi·2022년 9월 20일

클라우드

목록 보기
4/6

Container란?

단일 Host OS 위에서 여러 개의 프로세스가 고립된 공간에서 동작하는 구조이다.

리눅스 컨테이너 → 리눅스의 Namespace, Cgroup 기술을 이용함, Linux OS 위의 kernel에 존재한다.


Linux Container

Linux OS에서 Application을 격리 → 독립성을 제공한다.

독립성을 제공하기 위해 Cgroup과 namespace를 이용 → 논리적인 구별을 해준다.

namespace: 사용되는 다양한 변수등의 Name들을 분리 → 각 그룹이 독자적으로 사용하게 한다.

Cgroup: 프로세스 그룹의 cpu, memory와 같은 자원들을 분리

장점: 프로세스만 동작 시키는 구조 → 생성, 시작, 종료가 빠르다. 하나의 OS에서 동작 → 자원을 효율적으로 이용가능. 이식성이 높다 → 컨테이너 단위로 옮길 수 있다.

단점: 커널을 Host OS와 공유해야된다. → Host OS에 종속적이다. 컨테이너별로 커널을 구성할 수 없다. → 보안 문제 발생 가능.


Docker와 kubernetes

Docker : application을 컨테이너에 담아주는 기술

kubernetes: 컨테이너를 관리해주는 기술


Container 기초 개념

Container는 process가 돌아가는데 필요한 라이브러리, configuration 등을 표준화된 패키징으로 묶어놓은 것을 말한다.

이러한 Container는 독립성을 제공해주고 효율적이다.

또한 Container는 이식성이 좋고 Container를 관리하는 작업과 돌아가는 작업이 분리되어 있다.

Container는 우선 namespace로 그룹화를 시켜 서로가 독립적이게 만들어주고 해당 namespace별로 cgroup을 활용하여 사용할 수 있는 하드웨어를 제한시킨다. → 이러한 2가지 방법으로 Container가 같은 OS에 있지만 서로 독립성을 지킬 수 있는 방법을 제시한다.

Container를 실행시키면 묶어둔 패키지를 풀어서 실행이 되게 한다.

profile
안녕하세요~

0개의 댓글