도커 컨테이너에는 자체 커널이 있습니까? 및 다른 경우 CoreOS와 같은 boot2docker). 편집 :

도커 리포지토리의 많은 도커 이미지가 우분투베이스로 만들어진 것을 알 수 있습니다.

그게 무슨 뜻이야? 각 컨테이너는 제거 된 Linux 커널 버전을 번들로 제공합니까?

컨테이너가 자체 커널 위에 있습니까? 그러나 컨테이너가 호스트의 커널을 공유한다고 생각했습니다 (일부 경우에는 사용자 정의 Tiny Core Linux 빌드 및 다른 경우 CoreOS와 같은 boot2docker).

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

답 : 아 아아아 아아아. 특정 Ubuntu 빌드에 ​​대한 apt-get 및 기타 구성 프로세스를 포함하는 Ubuntu 사용자 랜드 프로세스입니다. CentOS와 유사합니다. Docker는 단일 프로세스가 아니라 단일 항목입니다. 따라서 이러한 배포판의 진입 점은 다른 프로세스를 생성하는 일종의 초기화 프로세스입니다.



답변

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

Wikipedia에 따르면 http://en.wikipedia.org/wiki/Docker_(software)

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

cgroup, 네임 스페이스 및 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 시스템 (컨테이너)을 실행합니다. …이 접근 방식은 Linux 커널의 cgroups 기능을 사용하여 네임 스페이스 격리 및 프로세스 모음에 대한 리소스 사용 (CPU, 메모리, 디스크 I / O 등)을 제한, 설명 및 격리하는 기능을 제공합니다.


답변

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

“Docker Engine 컨테이너는 응용 프로그램과 그 종속 요소로만 구성됩니다. 호스트 운영 체제의 사용자 공간에서 격리 된 프로세스로 실행되어 다른 컨테이너와 커널을 공유하므로 VM의 리소스 격리 및 할당 이점을 누릴 수 있지만 훨씬 더 중요합니다. 휴대용이며 효율적입니다. “

작동 방식을 설명하는 데 도움이 될 수 있습니다.

출처 : https://www.docker.com/whatisdocker/