Docker 호스트 OS와 컨테이너 기본 이미지 OS 간의 관계는 무엇입니까?


122

올바른 질문을하고 있는지 확실하지 않습니다 ...하지만 내가 손에 넣을 수있는 모든 도커를 읽는 동안 Ubuntu 12.04 (예 :)에 Docker를 설치할 수 있음을 확인한 다음 설치할 수 있습니다. Fedora 컨테이너 또는 다른 버전의 우분투? (컨테이너에 사용자가 busybox를 설치 한 예가 있습니다.)

물론 나는 완전히 틀릴 수 있습니다.

그러나 기본 시스템과 컨테이너 사이에 일시적인 연결이있을 것으로 예상됩니다.

다시 설명 : 호스트 OS와 컨테이너 기본 이미지의 OS 간의 관계는 무엇입니까?

답변:


100

BraveNewCurrency에서 언급했듯이 호스트 OS와 컨테이너 간의 유일한 관계는 커널입니다.

도커와 '일반'가상 머신의 주요 차이점 중 하나이며 오버 헤드가 없으며 모든 것이 호스트 커널 내에서 직접 발생합니다.

이것이 컨테이너 내에서 Linux 기반 배포 / 바이너리 만 실행할 수있는 이유입니다. 다른 것을 실행하려면 불가능하지는 않지만 컨테이너 (qemu, kvm 등) 내에서 일종의 가상화가 필요합니다.

Docker는 파일 시스템 표현 인 이미지를 관리합니다. Linux 배포판을 설치하거나 단순히 바이너리를 넣을 수 있습니다.

실제로 예제의 편의를 위해 종종 기본 이미지에 의존하지만 배포 라이브러리 / 바이너리없이 이미지를 만들 수도 있습니다. 그렇게하면 정말 작지만 기능적인 용기를 갖게됩니다.

배포판과 관련하여 한 가지 더 : 커널은 여전히 ​​호스트의 커널이므로 배포판에서 제공하는 특정 커널 모듈 / 패치가 없습니다.


2
따라서 호스트 OS가 Ubuntu이면 컨테이너도 Ubuntu가 될까요?
리처드

21
컨테이너의 커널은 우분투의 커널이 될 것이지만 그 이상은 아닙니다. centos, archlinux, debian 또는 기타 Linux 기반 배포판을 컨테이너로 쉽게 실행할 수 있습니다.
creack

37
이 정보는 도커 웹 사이트에 직접 / 간접적으로 언급 될 수 있지만, 나는 그들이 이것을 좀 더 명확하게해야한다고 생각합니다. 나는 홈페이지, 개요, 대화 형 튜토리얼 및 대부분의 기본 튜트를 통해 작업했습니다. 그럼에도 불구하고 나는이 주제에 대해 혼란 스러웠고, docker의 최고의 성능 (사이트의 아키텍처 다이어그램을 기반으로 함)이 호스트와 컨테이너 OS에서 일치해야한다고 가정하기 시작했습니다. 나는 "리눅스 커널"의 개념을 처음 접했기 때문에 이것이 나에게 즉시 명백하지 않았습니다. 이것을 즉시 알면도 커가 두 배로 나쁜 엉덩이가됩니다.
ctrlplusb 2014 년

2
Docker는 고급 기능을 활용하는 매우 복잡한 프로젝트입니다. 어떤 시점에서 우리는 사용자가 운영 체제와 배포판의 차이와 같은 지식을 가지고 있다고 가정합니다. 가치를 더할 것이라고 생각한다면 문서는 오픈 소스이며 풀 요청을 제출할 수 있습니다.
creack

3
이것은 OS의 사용자 공간 부분 (라이브러리, 명령, 응용 프로그램) 만 컨테이너화 할 수 있음을 나타냅니다. 응용 프로그램에 다른 커널 버전 (예 : 3.10 대 4.9)이 필요한 경우 컨테이너에서 실행하지 못할 수 있습니다. 맞습니까?
David C.

23

말 그대로, 그들이 가진 유일한 공통점은 커널입니다. 그들의 전 세계 (파일 시스템)는 도커 컨테이너에 있습니다.


1

또 다른 고려 사항이 있습니다. 두 커널이 동일하더라도 호스트 OS가 RHEL 6과 같이 Docker를 지원하지 않는 경우 문제가 있습니다. https://access.redhat.com/solutions/1378023

따라서 이미지가 Linux 이미지 인 경우에도 RHEL 6에서 컨테이너를 회전 할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.