Docker 컨테이너에는 자체 커널이 있습니까?

Docker 컨테이너에는 자체 커널이 있습니까?

docker 저장소에 있는 많은 docker 이미지가 Ubuntu 기반으로 만들어진 것을 볼 수 있습니다.

그게 무슨 뜻이에요? 각 컨테이너에는 Linux 커널의 간단한 버전이 번들로 포함되어 있나요?

컨테이너는 자체 커널 위에 위치합니까? 그러나 나는 컨테이너가 호스트의 커널을 공유한다고 생각했습니다(어떤 경우에는 boot2docker, 맞춤형 Tiny Core Linux 빌드, 다른 경우에는 CoreOS와 같은 것임).

편집하다:질문을 조금 명확하게합니다. 예, 도커는 전체 VM이 아닌 프로세스 컨테이너라는 것을 알고 있습니다. 하지만 공식 도커 허브 레지스트리와 CentOS와 같은 다른 OS에는 "Ubuntu" 컨테이너가 있으므로 컨테이너에서 Ubuntu를 실행한다는 것은 무엇을 의미합니까?

답변:아, 방금 생각났어요. 이는 특정 Ubuntu 빌드에 ​​대한 apt-get 및 기타 구성 프로세스를 포함하는 Ubuntu 사용자 영역 프로세스입니다. CentOS에서도 마찬가지입니다. Docker는 단일 프로세스가 아니라 단일 항목입니다. 따라서 이러한 배포판의 진입점은 다른 프로세스를 생성하는 일종의 init 프로세스입니다.

답변1

Docker는 호스트 OS 커널을 사용하므로 컨테이너 내부에는 사용자 정의 또는 추가 커널이 없습니다. 머신에서 실행되는 모든 컨테이너는 이 "호스트" 커널을 공유합니다.

위키피디아는 말한다http://en.wikipedia.org/wiki/Docker_(소프트웨어)저것

Docker는 cgroup 및 커널 네임스페이스와 같은 Linux 커널의 리소스 격리 기능을 사용하여 독립적인 "컨테이너"가 단일 Linux 인스턴스 내에서 실행될 수 있도록 하여 가상 머신 시작에 따른 오버헤드를 방지합니다.

cgroups, 네임스페이스 및 LXC는 프로세스 그룹을 격리하는 Linux 커널의 기능입니다. 여전히 단일 커널, 단일 스케줄러 및 하나의 커널 메모리 관리자 인스턴스가 있습니다.

Boot2docker 및 CoreOS는 일부 호스트 커널을 포함하는 경량 Linux 배포판입니다. Docker 컨테이너를 로드하는 데 사용할 수 있습니다.

http://boot2docker.io/

boot2docker는 Docker 컨테이너를 실행하기 위해 특별히 제작된 Tiny Core Linux 기반의 경량 Linux 배포판입니다. RAM에서 완전히 실행되고 무게는 ~27MB이며 부팅 시간은 ~5초(YMMV)입니다.

http://en.wikipedia.org/wiki/CoreOS

단일 제어 호스트(CoreOS 인스턴스)는 Docker를 추상화의 추가 계층으로 사용하고 Linux 커널의 기본 운영 체제 수준 가상화 기능에 대한 인터페이스[14]로 여러 격리된 Linux 시스템(컨테이너)을 실행합니다. ... 이 접근 방식은 프로세스 모음에 대한 리소스 사용량(CPU, 메모리, 디스크 I/O 등)을 제한, 계산 및 격리하는 네임스페이스 격리 및 기능을 제공하는 Linux 커널의 cgroups 기능에 의존합니다.

답변2

거의 모든 경우에 호스트 OS 커널이 공유됩니다. 다른 커널을 실행하려면 가상화를 사용해야 합니다. 이는 드물며 성능 저하로 인해 필요한 경우에만 사용됩니다.

"Docker 엔진 컨테이너는 애플리케이션과 해당 종속성으로만 구성됩니다. 호스트 운영 체제의 사용자 공간에서 격리된 프로세스로 실행되어 다른 컨테이너와 커널을 공유합니다. 따라서 VM의 리소스 격리 및 할당 이점을 누리지만 훨씬 더 많은 이점을 누릴 수 있습니다. 휴대성이 좋고 효율적입니다."

이는 작동 방식을 설명하는 데 도움이 될 수 있습니다. 여기에 이미지 설명을 입력하세요

원천:https://www.docker.com/whatisdocker/

답변3

모든 Docker 컨테이너는 호스트 커널을 사용합니다.

이는 또한 호스트 커널과 컨테이너 배포판 간의 일부 비호환성으로 인해 문제가 발생할 수 있음을 의미합니다. 이론에 의하면. 예를 들어 컨테이너화된 소프트웨어가 호스트 커널로 컴파일되지 않은 일부 커널 기능을 사용하려는 경우 작동하지 않습니다.

관행은 이런 일이 발생하지 않는다는 것입니다. 도커 컨테이너의 주요 문제 원인은 일부 호스트-게스트 커널 비호환성이 아니라 도커 자체의 (종종 설명할 수 없는) 제한 사항입니다.

(Ps 사실상 모든 Linux 배포판은 모든 Linux 커널에서 작동하기 때문입니다.)

관련 정보