✅ Kernel과 System Call
Kernel이란?
하드웨어의 자원을 자원이 필요한 프로세서에 나눠주고, 덩달아 프로세서 제어, 메모리 제어, 프로그램이 운영체제에 요구하는 System call을 수행하는 부분
System Call이란?
사용자 모드의 프로세서들이 파일을 쓰거나 불러오기 위해서 커널에 요청해 커널 모드에서 처리하고 그 결과를 사용자 모드의 프로그램에 전달하는 것
✅ namespacing과 control Groups
Chrome은 python v2를 Node js는 python v3에만 엑세스할 수 있다고 가정하자
💡 해결 방안 : namespacing과 control groups를 이용해 단일 프로세스를 분리하고 제한할 수 있다.
Namespacing이란?
동일한 시스템에서 별개의 독립된 공간을 격리된 환경에서 운영하는 가상화 기술이다.
아파트가 각 호실 별로 격리된 주거 환경을 제공하는 것과 비슷한 개념이다.
Control Groups
특정 프로세스에서 사용할 수 있는 리소스의 양을 제한할 수 있다.
namespacing과 control group은 linux 운영체제에서만 제공한다.
- Mac 용 Docker를 설치했을 때 linux 가상머신을 설치한다.
- Docker가 실행되는 한 기술적으로는 linux 가상머신이 실행되고 있다.
✅ Container
컨테이너는 실행하고 있는 프로세스 + 작은 리소스의 조합이다.
Container는 앞서 본 리눅스의 namespacing과 control groups 개념을 적용시켜 container 별로 독립적인 공간을 제공한다. 즉, Hardware 가상화가 아닌 Process Isolation(프로세스 격리)를 해준다.
Container는 Host OS의 kernel을 사용하며, Filesystem을 가상화해 사용한다.
Host OS와 Container OS의 다른 부분만 Container 내에 Packing 된다.
app을 실행할 때는 Host OS위에 어플리케이션 실행 패키지인 Image를 배포하면 된다.
❓ 어떻게 image 파일 하나로 Container를 만들 수 있을까?
- Filesystem Snapshot
과거의 한 때 존재하고 유지시킨 컴퓨터 파일과 디렉터리의 모임으로 특정 디렉터리 또는 파일 세트를 Container에 붙여넣기 할 수 있다.
- Startup Command
이미지를 컨테이너로 만들 때 실행시키는 명령어이다.
https://losskatsu.github.io/os-kernel/linux-namespace/#
[리눅스] 네임스페이스(namespace) 개념
리눅스 - 네임스페이스(namespace)의 개념
losskatsu.github.io
https://www.udemy.com/course/docker-and-kubernetes-the-complete-guide/
https://velog.io/@bsjp400/Docker-docker와-VM의-차이
[Docker] docker와 VM의 차이
가상화 기술이 나오기전엔 한대의 서버를 하나의 용도로만 사용그러다보니 남는 서버 공간은 그래도 방치되게 됌또한 하나의 서버에 하나의 운영체제, 하나의 프로그램만을 운영따라서 안정적
velog.io
Docker 소개
Docker란 무엇인가? 개념 잡기 Docker는 Linux 기반의 Container RunTime 오픈소스이다. 처음 개념을 잡기가 조금 어려운데, Virtual Machine과 상당히 유사한 기능을 가지면서, Virtual Machine보다 훨씬 가벼운..
bcho.tistory.com
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
초보를 위한 도커 안내서 - 도커란 무엇인가?
도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이
subicura.com
'Docker' 카테고리의 다른 글
[Docker] detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd" (0) | 2022.01.17 |
---|---|
Docker Engine에 대해서 알아보자 (0) | 2022.01.07 |