我在macOS Sierra上安装了Docker,如下所示.注意我没有安装VirtualBox.

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内核从何而来?

推荐答案

虽然关于虚拟机监控程序的其他答案是正确的,但它们并没有回答您的特定问题.

答案是"Docker[Desktop]for Mac"确实运行Linux主机虚拟机,它取代了Docker为制作轻量级发行版而开发和维护的boot2docker-LinuxKit.

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

你看到的uname中没有关键字,但现在似乎已经包括在内了,例如Mac 18.03.1版Docker的:

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

您可以在发布页面上看到包含版本的链接.

所以它和oldDocker Machine + VirtualBox + boot2docker没有太大区别,

在新的日子里

Linux相关问答推荐

bind() 错误 98 - 地址已在使用中

运行系统命令失败,但相同的命令可以直接在 bash 中执行

使用 PowerShell 删除重复行所需的时间比 WSL 长得多

如何在 gcc 搜索路径上防止多个版本的 Boost?

inotifywait 可以说文件在另一个进程可以访问之前已关闭吗?

Google Cloud Ops Agent Mongo 集成错误 - AuthenticationFailed:SCRAM 身份验证失败,storedKey 不匹配

在 Ansible 中使用 JSON 查询过滤数据以从 ansible_fact 中提取数据

当 skylake 有 fsgsbase 时,为什么使用 __builtin_ia32_wrfsbase64 会收到非法指令?

使用打印命令 Select 子域

判断指定名称的画面是否存在

为什么 fork() 在 setsid() 之前

在 Bash 中从最后到第一个输出文件行

将 $_GET 参数传递给 cron 作业(job)

bash 脚本中的自动 docker 登录

vscode 总是请求保存权限

如何在 Linux 中删除早于特定日期的文件?

如何从 Linux 终端找到特定文件?

如何在 linux 或 unix 上找到用户的主目录?

如何编写 Mono 守护程序

在linux中根据内容拆分文件