>운영 및 유지보수 >Docker >docker는 호스트와 커널을 공유합니까?

docker는 호스트와 커널을 공유합니까?

WBOY
WBOY원래의
2022-03-08 15:22:125470검색

Docker와 호스트는 커널을 공유합니다. Docker 컨테이너는 본질적으로 호스트의 프로세스입니다. Docker는 네임스페이스를 통해 리소스 격리를 구현합니다.

docker는 호스트와 커널을 공유합니까?

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

Docker와 호스트가 커널을 공유하나요?

Docker와 호스트가 커널을 공유합니다

핵심은 커널의 네임스페이스와 cgroup을 통해 달성되는 프로세스 격리입니다

Docker를 이야기할 때 흔히 Docker 구현에 대해 이야기합니다. 많은 개발자는 Docker 컨테이너가 기본적으로 호스트 시스템의 프로세스라는 것을 알고 있습니다. Docker는 네임스페이스를 통해 리소스 격리를 구현합니다. 리소스 제한은 cgroup을 통해 구현되며 효율적인 파일 작업은 쓰기 중 복사 메커니즘을 통해 구현됩니다. 그러나 네임스페이스 및 cgroup과 같은 기술적인 세부 사항을 자세히 살펴보면 대부분의 개발자는 당황하게 될 것입니다. 따라서 여기서는 먼저 Linux 커널로 안내하고 네임스페이스 및 cgroup의 기술적인 세부 사항을 이해하겠습니다.

네임스페이스 리소스 격리

리소스 격리 컨테이너를 구현하려면 어디서부터 시작해야 할까요? 어떤 사람들의 첫 번째 반응은 chroot 명령일 수 있습니다. 이 명령이 사용자에게 주는 가장 직관적인 느낌은 사용 후 루트 디렉터리 /의 마운트 지점이 전환된다는 것, 즉 파일 시스템이 격리된다는 것입니다. 다음으로 분산환경에서 통신하고 위치를 찾기 위해서는 컨테이너가 독립적인 IP, 포트, 라우팅 등을 가지고 있어야 하므로 당연히 네트워크 격리가 떠오른다. 동시에 컨테이너는 네트워크에서 자신을 식별하기 위해 독립적인 호스트 이름도 필요합니다. 네트워크를 생각하면 자연스럽게 통신이 떠오르고, 프로세스 간 통신의 격리 필요성도 떠오릅니다. 개발자는 권한 문제에 대해서도 생각해 본 적이 있을 것입니다. 사용자와 사용자 그룹을 격리하면 사용자 권한이 격리됩니다. 마지막으로, 컨테이너에서 실행되는 애플리케이션에는 자체 PID(PID)가 있어야 하며 당연히 호스트의 PID와 격리되어야 합니다.

따라서 컨테이너에 필요한 6가지 격리가 기본적으로 완료되었습니다. Linux 커널은 표 1-1에 표시된 대로 이러한 6가지 네임스페이스 격리 시스템 호출을 제공합니다.

docker는 호스트와 커널을 공유합니까?

사실 리눅스 커널 구현 네임스페이스의 주요 목적 중 하나는 경량 가상화(컨테이너) 서비스를 구현하는 것입니다. 동일한 네임스페이스에 있는 프로세스는 서로의 변경 사항을 감지할 수 있으며 외부 프로세스에 대해서는 아무것도 알 수 없습니다. 이는 컨테이너의 프로세스가 독립적인 시스템 환경에 있는 것처럼 보이게 하여 독립성과 격리를 달성할 수 있습니다.

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

위 내용은 docker는 호스트와 커널을 공유합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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