리눅스, 유닉스 환경에서의 컨테이너
도커 컨테이너를 이해하기 위해 먼저 리눅스 컨테이너를 이해해보자
리눅스 환경에는 chroot 라는 명령어가 있는데
이 chroot(change root directory)는 실행중인 프로세스와 자식 프로세스 그룹에서 루트 디렉토리를 변경하는 작업이다.
이걸 통해 특정 경호의 디렉토리를 루트 디렉토리로 설정하면 트리 밖의 파일들의 이름을 접근할 수 없기때문에
chroot jail이라고 부른다.
리눅스 컨테이너
chroot jail 은 설정 하는 방법이 복잡했고 완벽한 가상환경이 아니다 보니 여러가지 제약이 있었다.
그래서 등장한게 리눅스에서 제공하는 LXC(Linux Container) 라는 시스템 레벨의 가상화 였다.
리눅스 커널 레벨에서 격리된 가상화 공간인데 OS 자체를 가상화시키지는 않아서 컨테이너라고 불렀다.
여기서 사용된게 cgroups 와 namespace 가 사용해서 격리된 공간을 만들었는데,
cgroups 는 어플리케이션에 하드웨어 리소스들(CPU, 메모리, 디스크, 네트워크) 등의 자원을 그룹으로 묶어서 할당하는 기술이고, namespace는 호스트 OS 와는 완전히 격리된 OS View 를 제공하는 커널 기술이다.
도커 컨테이너
도커 컨테이너는 cgroups 와 namespace 를 기반으로 하면서 이미지, 컨테이너 등의 다양한 기능들을 제공했다.
'인프라 > docker' 카테고리의 다른 글
docker 볼륨 (0) | 2021.08.19 |
---|---|
docker 네트워크 구조 (0) | 2021.08.19 |
docker image (0) | 2021.08.18 |
docker 란? (0) | 2021.08.18 |