为什么Docker会调用Moby的每台机器?

时间:2017-08-16 18:23:45

标签: docker dockerfile

我注意到每当我创建一个新的Dockerfile并且:

RUN FROM ubuntu:latest或者如果我运行以下命令:

docker run -it ubuntu bash然后执行:

uname -a,结果总是如下:

Linux 5d0eab7d2f8e 4.9.36-moby #1 SMP Wed Jul 12 15:29:07 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Ubuntu-16.04的结果不应该是uname -r吗?为什么说Moby而不是Ubuntu?

2 个答案:

答案 0 :(得分:2)

4.9.36-moby是内核版本。内核是" host"之间共享的一个内核。和所有容器。因此,您正在运行Ubuntu容器,但内核来自"主机"。

因为您在macOS上使用了主机"实际上是Docker for Mac运行的Linux VM。该VM运行名为moby的内核风格。我相信您可以在此处了解有关该内核的更多信息:https://github.com/linuxkit/linuxkit

答案 1 :(得分:2)

Docker容器共享主机操作系统的内核,因此当您在Ubuntu容器中调用uname -r时,此命令将返回主机操作系统内核的信息。

在您的情况下,主机操作系统是MacOS。由于Docker需要一个Linux kernerl并且无法直接使用MacOS的内核,因此Docker for Mac将尝试使用Linux内核(称为Moby Linux)创建一个HyperKit VM来运行容器。所以在这种情况下,uname -r命令将输出Moby Linux的内核信息。

有关详细信息,请查看Docker for Mac文档:https://docs.docker.com/docker-for-mac/docker-toolbox/#the-docker-for-mac-environment

相关问题