SharedIT | 묻고 답하기(AMP)

컨테이너 환경에서 OS를 커널로 공유한다는 의미는 무엇인가요?



컨테이너는 OS가 프로세스로 뜨고 기존 가상화에 있는 Guest OS가 커널로 공유하여 가볍고, 빠르다는 것을 알고 있는데요, 물론 OS가 프로세스로 뜨기에 용량도 300~400백 메가? 기존 1기가 넘는 가상화 OS 보다는 가벼운 걸로 알고 있는데요,,


이런 컨테이너는 OS를 호스트 OS의 커널로 공유한다는 의미는 무엇인가요?

비유를 들어서 설명해주시면 이해가 쉬울 거 같습니다. 

Tags : 태그가 없습니다.

5개의 답변이 있습니다.

앵그리파파
  0 추천 | 7달 전

컨테이너화는 기본 OS 커널을 동일한 시스템의 다른 컨테이너와 공유하는 격리된 환경에서 애플리케이션을 실행하는 방법입니다. 컨테이너는 종속성, 필요한 라이브러리 및 바이너리와 함께 애플리케이션을 컨테이너 이미지라고 하는 독립된 패키지로 패키지화 하여 여러 컴퓨팅 환경에 쉽게 배포 및 배포할 수 있습니다. 

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

컨테이터 기반 가상화는 기존 가상화와 달리 하이퍼바이저 위에서 여러개의 Guest OS를 실행하는 대신 Host OS 커널을 사용하여 격리된 여러 개의 컨테이너를 실행합니다.

즉, 컨테이너형 가상화는 Guest OS를 사용하지 않고 Host OS에 컨테이너형 가상화 소프트웨어를 설치합니다. 따라서 기존 가상화에 비해 컨테이너화가 더 가볍고 효율적 입니다.

컨테이너 기반 가상화에 각 컨테이너는 Host OS에서 프로세스로 실행되며 자체적으로 격리된 파일 시스템, 네트워크 인터페이스 및 리소스를 갖습니다. 설치 같은 번거로움을 크게 줄일 뿐만 아니라 가상 하드웨어나 Guest OS를 실행할 필요가 없는 만큼 성능도 좋아집니다.

앵그리파파 | 7달 전

참고로 Docker(도커)와 함께 이해하면 좋을 것 같습니다. 도커는 컨테이너화 플랫폼으로, 애플리케이션별 가상화를 가능하게 하는 독립된 단위인 컨테이너를 생성합니다. 각 컨테이너에는 애플리케이션과 필요한 모든 종속성, 라이브러리, 구성 파일이 포함되어 있는 호스트 시스템과 독립적인 격리된 환경에서 실행할 수 있습니다. 

도커는 초기에는 lxc를 베이스로 켄테이너 생성 및 관리를 위한 가볍고 효율적인 방법을 제공하여 애플리케이션별 가상화를 구현합니다.

호스트 OS와 커널을 공유하기 때문에 Guest OS가 필요하지 않아 성능상 이점을 가져올 수 있습니다. 또한 경계가 나뉜 파일 시스템과 쓰기 시 복사 기술을 사용하여 컨테이너의 스토리지 공간을 최소화하여 빠르고 효율적으로 컨테이너를 시작하고 관리할 수 있습니다.

Genghis Khan
  0 추천 | 7달 전

가상화 구조와 컨테이너 구조는 다르죠

컨테이너로 구성한 애플리케이션은 

인프라스트럭처 --> 호스트 운영체제 --> 도커(컨테이너 엔진) --> 앱A~앱N 까지 구조로 되어 있죠


위 이미지처럼

컨테이너는 가상화 기술과는 다르게, 운영 체제의 전체 인스턴스를 가상화하지 않습니다. 

대신, 컨테이너는 호스트 시스템과 같은 커널을 공유하며, 애플리케이션(app)을 격리된 환경에서 실행합니다. 

이렇게 함으로써, 컨테이너는 가볍고 빠르게 시작되며, 호스트 시스템과 리소스를 효율적으로 공유합니다.


wansoo
  0 추천 | 7달 전

쉽게 말해서 동일한 OS를 함께 사용한다는 의미입니다.

커널이라는 것은 OS의 핵심 시스템을 말하는 것이고요.

일반 데스탑에 윈도 OS를 설치하고, 그 OS에 한/글, 파워포인트, 엑셀, 포토샵, 메모장, 그림판, ... 등등의 어플리케이션을 실행해서 사용하잖아요.

한/글, 파워포인터, 엑셀, 포토샵 등등이 동일한 OS 커널을 함께 공유하면서 실행되는 것입니다.

윈도 OS에 한/글 소프트웨어를 2개, 3개 동시에 실행해서 사용하기도 하잖아요.

물론, 엑셀, 파워 포인트도 마찬가지이고...

한/글 2개, 3개를 동시에 실행해서 사용할때 동시에 실행된 한/글 소프트웨어가 동일한 OS 커널을 공유하면서 실행되는 것입니다.

엑셀, 파워포인트도 마찬가지 개념이 되겠고요.

컨테이너 또한 여러개의 컨테이너들을 한/글이나 엑셀, 파워 포인트 처럼 실행되는 소프트웨어의 하나가 되겠고요.

여러개의 컨테이너를 동일한 OS에서 동시 실행해서 사용할 경우에 그 컨테이너들이 동일한 OS ( 커널 )을 공유해서 실행되는 것인거고요.


가상 컴퓨터는 동일한 하드웨어에 여러개의 가상 컴퓨터를 올려서 각각의 가상 컴퓨터마다 OS를 올려서 어플리케이션을 실행하게 되는데요.

1번 가상 컴퓨터와 2번 가상 컴퓨터에서 실행되는 소프트웨어는 서로 다른 OS 환경에서 실행되기 때문에 OS를 공유하는 것이 아닌것이되겠고요.

가상 컴퓨터는 동일한 CPU 및 하드웨어를 공유해서 사용하는 형태가 되는 것이 되겠고...

컨테이너 환경은 동일한 CPU 및 하드웨어를 공유하고, OS까지 동일하게 공유해서 사용하는 환경이 되는 것이되겠고요.

topkslee
  0 추천 | 7달 전

VM은 물리적인 서버를 여러개의 독립된 가상의 서버로 구성하기에

가상 서버별 OS. 어플레케이션이 각각 다르게 궁성하고 운영됩니다.


반면 컨테이너는 Host OS 하나에 여러개의 어플리케이션을 컨테이너화 해서 운영하는 환경으로

컨테이너가 별도의 OS가 없기에 VM보다는 더 가벼운것이구요.

컨테이너화된 이미지에 말씀하신 것처럼 가벼운 OS가 있다고 하더라도 

OS의 자원이 필요하거나 지원이 필요한 경우 Host OS를 활용한다는 의미입니다.

Host OS가 하나이니 dedicate는 아니고 공유한다는 의미가 되는 것이지요.

sshnau
  0 추천 | 7달 전

가상머신(VM)은 아실테죠
가상머신은 하이퍼바이저를 공유하면서 각 VM 별로 OS를 나눠서 기동할 수 있습니다.
컨테이너는 게스트OS를 공유하면서 각 컨테이너 별로 서비스를 기동할 수 있습니다.
OS가 동작하기 위해서는 커널이 존재하는데 컨테이너 별로 그 커널을 공유(나눠서쓴다)한다고 생각하시면 될것 같습니다.

그래서 게스트OS가 박살나면 그 위에 동작하는 컨테이너들도 다 동작이 안됩니다.