마이크로 서비스 솔루션 컨테이너

컨테이너 기술은 마이크로 서비스를위한 솔루션 중 하나입니다.

컨테이너 및 가상 머신

과거에는 단일 애플리케이션 배포에서 일반적으로 가상 머신을 사용하여 애플리케이션에 필요한 운영 체제와 종속 환경을 만들었지 만 가상 머신은 상대적으로 많은 하드웨어 리소스를 사용했습니다. 단일 애플리케이션이 더 작은 마이크로 서비스로 분해 될 때 가상 머신을 사용하는 것은 비용 효율적이지 않습니다. 따라서 가상 머신보다 하드웨어 오버 헤드가 적은 컨테이너가 대체 마이크로 서비스 솔루션이되었습니다.
컨테이너는 가상 머신과 유사하며 독립적 인 운영 환경을 만들 수 있습니다. 그러나 가상 머신과 달리 컨테이너의 프로세스는 호스트 머신의 운영 체제에서 실행되지만 프로세스 자체는 운영 체제에서 유일한 프로세스라고 느낍니다. 가상 머신에는 더 많은 시스템 리소스를 소비하는 자체 시스템 프로세스가 필요하므로 일반적으로 여러 모 놀리 식 애플리케이션이 하나의 가상 머신에 그룹화되고 배포됩니다. 컨테이너 기술을 사용하면 각 마이크로 서비스 애플리케이션을 컨테이너에서 개별적으로 실행할 수 있으므로 궁극적으로 더 많은 애플리케이션을 동일한 베어 메탈에서 실행할 수 있습니다. 또한 컨테이너를 실행하는 데 가상 머신처럼 부팅 (자체 시스템 서비스 실행)이 필요하지 않으므로 컨테이너의 프로세스를 더 빠르게 시작할 수 있습니다.

컨테이너 격리 계획

컨테이너는 Linux 네임 스페이스와 Linux 제어 그룹의 두 가지 체계를 통해 프로세스 간의 격리를 실현할 수 있습니다.

Linux 네임 스페이스

Linux에서는 여러 리소스 유형이 사용됩니다.

  • Mounf (mnt)
  • 프로세스 ID (pid)
  • 네트워크 (net)
  • 프로세스 간 통신 (등)
  • UTS
  • 사용자 ID (사용자)
    각 유형의 리소스에는 해당 리소스를 격리하는 네임 스페이스가 있습니다. 예를 들어 UTS 네임 스페이스는 네임 스페이스에서 실행중인 프로세스에서 볼 수있는 호스트 이름과 도메인 이름을 결정합니다. 두 개의 서로 다른 UTS 네임 스페이스를 프로세스 쌍에 할당하면 서로 다른 로컬 호스트 이름을 볼 수 있습니다.
    새 네임 스페이스가 생성되면 이러한 리소스를이 네임 스페이스에 구성 할 수 있습니다. 이 네임 스페이스에서 실행되는 프로그램은 동일한 네임 스페이스의 리소스 만 볼 수 있습니다.
Linux 제어 그룹

Linux 제어 그룹 / cgroup은 프로세스 또는 프로세스 그룹이 사용할 수있는 리소스를 제한하는 데 사용되는 Linux 커널 기능입니다.

용기의 한계

  • 컨테이너에 자체 커널이 없으므로 호스트의 커널과 컨테이너의 커널 모듈이 일치하지 않으면 컨테이너를이 호스트에서 실행할 수 없습니다.
  • 컨테이너는 컴파일 시스템과 동일한 하드웨어 아키텍처를 가진 호스트 시스템에서만 실행할 수 있습니다. 예를 들어 x86 아키텍처의 저렴한 애플리케이션 컨테이너는 ARM 아키텍처 시스템에서 실행할 수 없습니다.

추천

출처blog.csdn.net/JosephThatwho/article/details/111458049