Docker 如何在 macOS 主机下运行 Linux 内核?

我在 macOS Sierra 上安装了 Docker,如下所示。

brew cask uninstall virtualbox
brew cask install docker

我的 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

一旦我从 launchpad 运行 Docker,我就能够运行 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

我的问题是 Docker 是如何在 macOS 中运行 Linux 内核的?我认为 Docker 至少需要 boot2docker 或其他类似的 Linux 内核运行,这样它才能在它的帮助下创建 Ubuntu 的文件系统。但上述输出似乎表明情况并非如此。那么 Linux 内核从何而来呢?

48635 次浏览

Docker 正在使用苹果的 Hypervisor 框架: https://developer.apple.com/reference/hypervisor

更多关于 Docker 博客的阅读请点击: https://blog.docker.com/2016/05/docker-unikernels-open-source/

早期版本的 Docker 使用 VirtualBox 为 Docker 运行虚拟机。自2016年6月以来,在 Mac 和 Windows 上运行 Docker 的方式变得更加简单,有了 Mac/Windows 上 Docker 的官方发布介绍博客,还有一些来自 Docker Mac 网站的介绍:

Docker for Mac 是一个完整的开发环境,深入集成了 MacOS Hypervisor 框架、网络和文件系统。

结构是这样的:

enter image description here

虽然关于系统管理程序的其他答案是正确的,但是它们不能回答您的具体问题。

答案是“ Docker [ Desktop ] for Mac”确实运行一个 Linux 主机 VM,它替代了由 Docker 开发和维护的 boot2docker-LinuxKit,目的是制作轻量级发行版。

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

你看到的 uname 里面没有关键字,但是现在似乎包含了,比如从 Docker for Mac 18.03.1我看到:

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

您可以在发行版页面上看到指向所包含版本的链接。 Https://docs.docker.com/docker-for-mac/release-notes/

所以它和 老了天没什么不同,

在新的日子里 “ Docker [ Desktop ] for Mac” and VirtualBox is replaced by Apple's Hyperkit, 和 the "default VM" is a bit more tucked away