Docker? 그 이전에 Process가 먼저

이민석·2022년 6월 22일
0

infra

목록 보기
2/2

널널한 개발자 - Docker? 그 이전에 Process를 보고 정리한 내용입니다.

이 내용은 Docker가 컨테이너를 만들 때 사용하는 프로세스에 대한 개념을 알기 쉽게 정리한 글 입니다.
다 읽고 Docker가 궁금해졌다면?

👉 여기서 확인하실 수 있습니다.

Process

도커를 배우기 전에 프로세스에 대해 안다면 도커를 이해하는 데 도움이 된다.

프로세스란 프로그램을 실행하는 데 사용되는 용량이다. 예를 들어 Word나 Excel을 사용한다면 하나당 하나의 프로세스를 사용한다고 생각하면 된다. 실행되고 있는 각각의 프로세스는 고유한 PID(Process ID)를 가지고 있는데 위의 그림과 같이 같은 프로그램도 여러 프로세스로 사용할 수 있다.

하나의 프로그램이 동작한다는 사전적 정의로 Task라는 용어가 사용된다. 여러가지 프로그램이 실행되고 있다면 다수의 Task가 사용되고 있다는 의미인데, 우리가 흔히 사용하는 멀티태스킹이 이 경우에 해당된다.


User | Kernel | H/W

Kernel(이하 커널)은 운영체제의 자원 관리를 담당한다.

예를 들어, Word를 실행하기 위해 CPU와 RAM(메모리)을 할당한다. 사용하다가 추가 메모리가 필요하다면 위치에 상관없이 추가 메모리를 할당하는 방식으로 프로그램을 실행하기 위한 자원 관리를 해준다.

Word를 실행하는 중에 Excel을 실행한다면 추가적인 CPU와 메모리를 할당한다. 만약 Excel이 사용하는 메모리가 Word에 할당된 메모리를 침범한다면, Excel에 입력값을 넣으면 Word에 입력되는 기이한 현상이 발생한다.

그래서 운영체제는 위와 같은 일이 발생하지 않도록 자원을 관리하고 통제하는 역할을 한다. 발생하게 된다면 잘못된 연산이라 판단하고 흐름을 멈춘다.

프로세스는 하나의 단위이다. 운영체제 입장에서 전산 자원을 관리하여 분배해야 하는데 그 때 필요한 곳에 할당하는 단위프로세스이다.

프로세스라는 단위마다 자원을 주는데 정확히는 CPU 자원과 RAM 같은 메모리 자원을 분배한다. 각 프로세스 별로 독립된 공간을 따로 할당받기 때문에 서로가 침범하지 않는다.

여기서 한 가지 더 생각한다면, 운영체제가 PPT 프로그램에게 추가적인 자원을 할당한다고 생각해보자. 앞의 프로그램들을 포함하여 모든 관리를 Kernel에서 하고있는데, H/W의 입장에서 보면 모든 자원을 공유해서 사용하고 있는 것이다. 이 상태에서 프로그램을 분리하여 컨테이너를 생성하는 것이 도커의 역할이다.

닥터 스트레인지의 미러디멘션과 같다. 같은 세상(운영체제)을 공유하는데 마치 다른 세상(컨테이너)에 살아가는 것 처럼 공간을 부여한다.

도커의 재밌는 점은 실제로 PPT가 다른 프로그램처럼 자원을 사용하는데 커널에서 행동 반경에서 제약이 발생한다는 것이다. 즉, 프로세스의 행위가 제약된다. 노란 컨테이너 안에서 독립적으로, 마치 새로운 운영체제를 사용하는 것처럼 동작한다.

도커가 왜 성능이 좋은 지는 여기서 알 수 있다. 마치 그렇게 적용한 것 처럼 했을 뿐이고, 도커가 실행되고 있는 Host OS 입장에서 보면 컨테이너는 단순히 커널에서 실행되고 있는 하나의 프로세스로 인식한다. 또한, 도커 내부와 외부가 통신하기 위해서는 특별한 절차가 필요하다.

한 마디로, 커널(운영체제)은 도커의 존재와 상관없이 프로세스 단위로 자원을 분배하고 다만 도커라는 컨테이너로 가두어 하나의 프로세스로 인식한다.


간단히 정리하자면

프로세스는 쉽게 연산의 덩어리를 관리하는 단위라고 정의할 수 있다. 이 관리의 주체를 운영체제(OS)라고 할 수 있다. 그래서 운영체제는 프로세스 단위로 자원을 할당하고, 그 중에서도 도커에 영향을 주는 메모리를 관리한다. 그 메모리는 Virtual Memory(가상 메모리)이다.

결론적으로 도커 컨테이너에서 프로세스라는 것은 Host OS 입장에서 프로세스와 같다. 커널을 공유하는 공간을 컨테이너라는 이름으로 격리시켜서 마치 독립적인 컴퓨터가 생기는 효과를 발생한다.

profile
오늘은 무엇을 배울까

0개의 댓글