>  기사  >  운영 및 유지보수  >  Docker 컨테이너와 기존 가상화의 차이점은 무엇입니까?

Docker 컨테이너와 기존 가상화의 차이점은 무엇입니까?

WBOY
WBOY원래의
2022-01-28 10:36:3011266검색

차이점: 1. 기존 가상화의 생성 속도는 매우 느린 반면, 컨테이너 가상화의 생성 속도는 매우 빠릅니다. 2. 기존 가상화는 시스템 조정 체인에 링크를 추가하고 성능 손실을 초래하는 반면, 컨테이너 가상화에는 공통 핵심이 있습니다. 성능 손실이 거의 없습니다. 3. 기존 가상화는 여러 운영 체제를 지원하는 반면 컨테이너 가상화는 커널에서 지원하는 운영 체제만 지원합니다.

Docker 컨테이너와 기존 가상화의 차이점은 무엇입니까?

이 튜토리얼의 운영 환경: linux7.3 시스템, docker-1.13.1 버전, Dell G3 컴퓨터.

도커 컨테이너와 기존 가상화의 차이점은 무엇인가요?

전통적인 가상화 기술

가상화란 가상화 기술을 통해 하나의 컴퓨터를 여러 개의 논리적 컴퓨터로 가상화하는 것을 말합니다. 하나의 컴퓨터에서 여러 개의 논리적 컴퓨터를 동시에 실행할 수 있으며, 각 논리적 컴퓨터는 서로 다른 운영 체제를 실행할 수 있으며, 응용 프로그램은 서로 영향을 주지 않고 독립적인 공간에서 실행될 수 있어 컴퓨터의 작업 효율성이 크게 향상됩니다.

하드웨어 제조업체의 지속적인 개발로 인해 가상 머신의 많은 명령이 가상 하드웨어 계층을 거쳐 실제 하드웨어 계층으로 이동할 필요가 없습니다. 하드웨어 제조업체는 가상 머신에서 직접 하드웨어를 작동할 수 있는 실용적인 지침을 지원합니다. 이를 하드웨어 지원 가상화라고 합니다. 소프트웨어 가상화의 하드웨어 계층과 비교할 때 이러한 종류의 하드웨어 지원 가상화는 하드웨어를 작동하기 위해 모든 하드웨어를 시뮬레이션할 필요가 없습니다. ratio 기존 가상화가 더 높습니다.

시스템 수준 가상화

특징:

하드웨어 계층을 시뮬레이션할 필요가 없습니다.

동일 호스트의 커널 공유

기존 가상화와 컨테이너 가상화의 차이점

Docker 컨테이너와 기존 가상화의 차이점은 무엇입니까?

컨테이너의 핵심 기술

1.CGroup은 컨테이너의 리소스 사용량을 제한합니다

2.컨테이너 간 격리를 달성하기 위한 네임스페이스 메커니즘

3.chroot, 파일 시스템 격리.

CGroup:

Linux 커널 제한, 기록 및 프로세스 그룹에서 사용하는 리소스 격리. 백그라운드가 커널에 통합되었습니다. 다양한 리소스 사용에 대한 제어 및 기록은 다양한 하위 시스템을 통해 이루어집니다.

/sys/fs/cgroup

Namespace:

pid: 컨테이너에는 자체 독립 프로세스가 있습니다. 테이블 및 스레드 번호 1.

net: 컨테이너에는 자체적인 독립적인 네트워크 정보가 있습니다.

ipc: IPC 통신 중에 프로세스를 식별하기 위해 추가 정보가 추가되어야 합니다.

mnt: 각 컨테이너에는 고유한 디렉터리 마운트가 있습니다

utc: 각 컨테이너에는 독립적인 호스트 이름과 도메인이 있습니다.

chroot:

호스트의 디렉터리는 컨테이너의 루트 디렉터리입니다.

모든 애플리케이션에는 소프트웨어 및 하드웨어 리소스를 포함하여 자체 종속성이 있습니다. Docker는 각 애플리케이션을 컨테이너에 패키징하여 종속성을 격리하는 개발자를 위한 개방형 플랫폼입니다. 컨테이너는 수천 개의 노드로 확장할 수 있는 경량 가상 머신과 같으며, 다양한 가상 환경에서 동일한 애플리케이션을 실행하여 클라우드 이식성을 높이는 데 도움이 됩니다. 가상 머신은 격리 및 리소스 제어를 달성하기 위해 클라우드 컴퓨팅에서 널리 사용됩니다. 가상 머신은 자체 메모리 관리 기능을 갖춘 완전한 운영 체제를 로드하여 고가용성을 보장하는 동시에 애플리케이션을 더욱 효율적이고 안전하게 만듭니다.

Docker 컨테이너와 가상 머신의 차이점은 무엇인가요?

 가상 머신은 완전한 운영 체제를 갖추고 있으며, 관련 가상 장치를 통해 자체 메모리 관리가 지원됩니다. 가상 머신에서는 효율적인 리소스가 사용자 운영 체제와 하이퍼바이저에 할당되어 하나 이상의 운영 체제의 여러 인스턴스가 단일 컴퓨터(또는 호스트)에서 병렬로 실행될 수 있습니다. 각 게스트 운영 체제는 호스트 시스템 내에서 단일 엔터티로 실행됩니다.

  반면, Docker 컨테이너는 하이퍼바이저가 아닌 Docker 엔진을 사용하여 실행됩니다. 따라서 컨테이너는 가상 머신보다 작으며 호스트 커널 공유로 인해 성능이 향상되고 격리가 줄어들며 호환성이 향상되어 더 빠르게 시작할 수 있습니다. Docker 컨테이너는 커널을 공유하고 애플리케이션 라이브러리를 공유할 수 있으므로 사용자가 단일 플랫폼을 사용하여 공유 운영 체제를 제공하려는 경우 컨테이너는 더 빠르고 더 적은 리소스를 사용할 수 있습니다. 가상 머신은 생성하고 시작하는 데 몇 분이 걸리는 반면, 컨테이너는 생성하고 시작하는 데 몇 초 밖에 걸리지 않습니다. 컨테이너에 포함된 애플리케이션은 가상 머신에서 실행되는 애플리케이션에 비해 뛰어난 성능을 제공합니다.

 Docker 컨테이너가 가상 머신보다 취약하다는 주요 지표 중 하나는 "격리"입니다. Intel의 VT-d 및 VT-x 기술은 가상 머신에 링-1 하드웨어 격리 기술을 제공하므로 가상 머신이 이를 최대한 활용할 수 있습니다. 가상 머신이 리소스를 효율적으로 사용하고 서로 간섭을 방지하는 데 도움이 됩니다. 또한 Docker 컨테이너에는 어떤 형태의 하드웨어 격리도 없으므로 공격에 취약합니다.

선택하는 방법은 무엇입니까?

 컨테이너 또는 가상 머신 간의 선택은 애플리케이션 설계 방식에 따라 다릅니다. 애플리케이션이 확장성과 고가용성을 제공하도록 설계된 경우 컨테이너가 최선의 선택입니다. 그렇지 않으면 애플리케이션을 가상 머신에 배치할 수 있습니다. 데이터베이스 서비스와 같이 I/O 요구 사항이 높은 기업의 경우 Docker + 물리적 머신을 배포하는 것이 좋습니다. Docker가 가상 머신에 배포되면 I/O 성능이 가상 머신에 의해 제한되기 때문입니다. 테넌트 권한과 보안을 강조하는 가상 데스크톱 서비스와 같은 비즈니스의 경우 가상 머신의 강력한 다중 테넌트 격리 기능을 사용하면 테넌트가 가상 머신에 대한 루트 권한을 갖고 있는 동안 다른 테넌트와 호스트는 안전합니다. .

  또는 더 나은 옵션은 가상 머신에서 컨테이너가 실행되는 하이브리드 솔루션입니다. Docker 컨테이너는 가상 머신 내에서 실행될 수 있으며 검증된 격리, 보안 속성, 이동성, 동적 가상 네트워킹 등을 제공할 수 있습니다. 안전한 격리와 높은 리소스 활용도를 달성하려면 기본적으로 다양한 테넌트의 비즈니스 운영에 가상 머신 격리를 사용하고 동일한 컨테이너 세트에 유사한 유형의 비즈니스를 배포한다는 아이디어를 따라야 합니다.

결론

  Docker 컨테이너는 DevOps 환경에서 중요한 도구가 되고 있습니다. DevOps 세계에는 Docker 컨테이너에 대한 많은 사용 사례가 있습니다. Docker 컨테이너에서 애플리케이션을 실행하고 어디에서나(클라우드, 온프레미스, Linux 등) 배포하는 것이 이제 현실이 되었습니다.

 이기종 환경에서 작업하는 가상 머신은 높은 수준의 유연성을 제공하는 반면 Docker 컨테이너는 주로 애플리케이션과 해당 종속성에 중점을 둡니다. Docker 컨테이너를 사용하면 각 클라우드의 가상 머신 환경을 사용하여 클라우드를 처리함으로써 클라우드 간에 애플리케이션 스택을 쉽게 포팅할 수 있습니다. 이는 Docker 컨테이너가 없으면 더 복잡하고 지루한 방식으로 구현해야 하는 유용한 기능을 나타냅니다. 여기서 설명하는 것은 가상 머신을 포기하는 것이 아니라, 필요할 때 가상 머신 외에 실제 조건에 따라 Docker 컨테이너를 사용하는 것입니다. Docker 컨테이너가 가상 머신을 완전히 제거할 수 있다고는 생각되지 않습니다.

추천 학습: "docker 비디오 튜토리얼"

위 내용은 Docker 컨테이너와 기존 가상화의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.