web-dev-qa-db-fra.com

Comment Docker exécute-t-il un noyau Linux sous un hôte macOS?

J'ai installé Docker sur mon macOS Sierra comme suit. Remarque Je n'ai pas installé VirtualBox.

brew cask uninstall virtualbox
brew cask install docker

Mes détails 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

Une fois que j'exécute Docker à partir du tableau de bord, je peux exécuter des conteneurs Docker.

$ docker run -it ubuntu
root@2351d4222a4e:/# 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

Ma question est de savoir comment Docker parvient à exécuter un noyau Linux sous macOS? Je pensais que Docker aurait au moins besoin de boot2docker ou d'un autre noyau Linux de ce type pour pouvoir créer le système de fichiers d'Ubuntu à l'aide de celui-ci. Mais la sortie ci-dessus semble indiquer qu'il n'en est pas ainsi. D'où vient le noyau Linux?

21
Lone Learner

La première version Docker utilisait VirtualBox pour exécuter la machine virtuelle pour Docker. Depuis juin 2016, la façon d'exécuter Docker sur Mac et Windows est devenue beaucoup plus simple, il y a le blog officiel d'introduction de la version pour Docker sur Mac/Windows , et il y a aussi une introduction de site web docker mac :

Docker pour Mac est un environnement de développement complet profondément intégré à la structure, au réseau et au système de fichiers MacOS Hypervisor.

Et avec la structure ressemble à:

enter image description here

16
shizhz

Bien que les autres réponses soient correctes au sujet de l'hyperviseur, elles ne répondent pas à votre question spécifique.

La réponse est "Docker [Desktop] pour Mac" exécute un hôte Linux VM avec un remplacement pour boot2docker - LinuxKit développé et maintenu par Docker dans le but de réaliser des distributions légères.

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

Le nom que vous avez vu ne contenait pas le mot-clé, mais il semble être inclus maintenant, par exemple de Docker pour Mac 18.03.1 Je vois:

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

Vous pouvez voir des liens vers les versions incluses sur les pages de version. https://docs.docker.com/docker-for-mac/release-notes/

Ce n'est donc pas si différent des anciens jours Docker Machine + VirtualBox + boot2docker, c'est juste que l'approvisionnement est fait en interne par "Docker [Desktop] pour Mac" et VirtualBox est remplacé par Hyperkit d'Apple, et la "VM par défaut" est un peu plus caché.

12
scipilot

Docker utilise le framework Hypervisor d'Apple: https://developer.Apple.com/reference/hypervisor

Plus de lecture sur les blogs Docker pour quand est sorti l'année dernière: https://blog.docker.com/2016/05/docker-unikernels-open-source/

4
Digicoder