所有的docker图像有最小的操作系统?

我正在尝试学习Docker和那个提到的在线资料。 我开始知道,我们可以拉出正式的图像中心,并运行一个容器。

您可以通过https://hub.docker.com/查看Repos,屏幕截图的一部分:

在这里输入图像说明

在这个图中,我们可以看到Ubuntu,httpd,mysql(等等)的官方图片。

我的问题是:

所有这些图像都有“最小的操作系统”,他们运行。 例如,如果我们考虑httpd映像,它是否具有运行所需的操作系统?

大多数图像都是基于发行版的,因为您可以在Docker文件中看到它。 除了分配图像本身。 他们有一个不同的基本形象,这就是所谓的划痕 。

您可以在DockerHub上访问项目页面时查看它们基于的图像,例如https://hub.docker.com/_/httpd/

他们的Dockerfiles被引用,你可以通过点击它们来查看它们,例如第一个标签“2.2”是指这个文件 。 Dockerfile的第一行是FROM debian:jessie和shows,它基于Debian镜像。

它被广泛用于使用后缀为-alpine的分隔标签来表示使用了高山Linux ,这是一个比Debian图像小得多的基本图像。 这导致httpd映像的图像更小,因为基本图像要小得多。

整个想法是整个映像在硬件/虚拟化层完全独立运行。 因此,(亲:)也不能被其他东西影响,而不是其中的一部分。

每个图像都包含完整的操作系统 特殊的docker使操作系统来了几个兆字节:例如,与8兆字节的操作系统的Linux阿尔派 !

但更大的操作系统,如Ubuntu / Windows可能是几千兆字节。 两者都有它们的优点,因为docker会将图像分层切分,所以当您使用两次基本图像(FROM命令,请参阅N20 Answers)时,您将只下载一次该图层。

较小的操作系统只需要下载几兆的专业版。 但是对于你想使用的每一个(linux)库,你都必须下载&包含你自己。 然后,这个自定义的图层仅用于您自己的图像,因此不会在其他图像中重复使用,从而创build客户额外的下载图层,人们将不得不下载以运行图像。

如果你想从一无所有,你可以开始你的dockerfile:

 FROM scratch 

但是这并不是build议的,除非你真的知道自己在做什么和/或者你在做什么。