it-swarm.com.de

Wie führt Docker einen Linux-Kernel unter Mac OS Host aus?

Ich habe Docker wie folgt auf meinem macOS Sierra installiert. Hinweis Ich habe VirtualBox nicht installiert.

brew cask uninstall virtualbox
brew cask install docker

Meine Details zu macOS.

$ uname -a
Darwin m-C02QG7TRG8WN.local 16.5.0 Darwin Kernel Version 16.5.0: Fri Mar  3 16:52:33 PST 2017; root:xnu-3789.51.2~3/RELEASE_X86_64 x86_64

$ docker version
Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      darwin/AMD64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:00:50 2017
 OS/Arch:      linux/AMD64
 Experimental: true

Sobald ich Docker über das Launchpad ausführe, kann ich Docker-Container ausführen.

$ docker run -it ubuntu
[email protected]:/# uname -a
Linux 2351d4222a4e 4.9.13-moby #1 SMP Sat Mar 25 02:48:44 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Meine Frage ist, wie Docker es schafft, einen Linux-Kernel unter macOS auszuführen. Ich dachte, Docker würde mindestens boot2docker oder einen anderen Linux-Kernel benötigen, um das Ubuntu-Dateisystem damit erstellen zu können. Die obige Ausgabe scheint jedoch darauf hinzudeuten, dass dies nicht der Fall ist. Woher kommt der Linux-Kernel dann?

21
Lone Learner

Die frühe Version von Docker verwendete VirtualBox, um die virtuelle Maschine für Docker auszuführen. Seit Juni 2016 ist das Ausführen von Docker auf Mac und Windows viel einfacher geworden. Es gibt den offiziellen Blog zur Einführung in Docker auf Mac/Windows und eine Einführung von Docker-Mac-Website) :

Docker für Mac ist eine vollständige Entwicklungsumgebung, die tief in das MacOS Hypervisor-Framework, das Netzwerk und das Dateisystem integriert ist.

Und mit der Struktur sieht das so aus:

enter image description here

16
shizhz

Während die anderen Antworten in Bezug auf den Hypervisor korrekt sind, beantworten sie Ihre spezifische Frage nicht.

Die Antwort lautet "Docker [Desktop] für Mac" führt einen Linux-Host aus VM mit einem Ersatz für boot2docker - LinuxKit von Docker entwickelt und gewartet, um leichte Distributionen zu erstellen.

https://blog.docker.com/2017/04/introducing-linuxkit-container-os-toolkit/

Der Name, den Sie gesehen haben, enthielt kein Schlüsselwort, scheint aber jetzt enthalten zu sein, z. von Docker für Mac 18.03.1 sehe ich:

Linux a8e079429a51 4.9.87-linuxkit-aufs #1 SMP Wed Mar 14 15:12:16 UTC 2018 x86_64 Linux

Sie können Links zu den enthaltenen Versionen auf den Release-Seiten sehen. https://docs.docker.com/docker-for-mac/release-notes/

Es unterscheidet sich also nicht so sehr von den alten Tagen mit Docker Machine + VirtualBox + boot2docker. Es wird nur intern von "Docker [Desktop] für Mac" bereitgestellt, und VirtualBox wird durch Apples Hyperkit ersetzt, und die "Standard-VM" ist etwas mehr versteckt.

12
scipilot

Docker verwendet das Hypervisor Framework von Apple: https://developer.Apple.com/reference/hypervisor

Weitere Informationen finden Sie in den Docker-Blogs zum Zeitpunkt der Veröffentlichung im letzten Jahr: https://blog.docker.com/2016/05/docker-unikernels-open-source/

4
Digicoder