Docker镜像是否是完整的操作系统? 容器VS虚拟机

在dockerregistry有像ubunturedhat名字的图像。 这些映像是否运行完整的操作系统,还是只包含操作系统附带的实用程序?

我以为Docker使用主机操作系统,Docker镜像不应该运行操作系统。 请澄清。

Docker containers将一个软件包装在一个完整的filesystem ,该filesystem包含运行所需的所有东西:代码,运行时,系统工具,系统库 – 任何可以安装在服务器上的东西。

FreeBSD JailsSolaris ZonesLinux containers是独立的执行环境 – 具有独立的CPU,内存,块I / O和networking资源(使用CGROUPS内核function) – 共享主机操作的内核系统 。 结果是感觉像一个virtual Machine ,但摆脱了来宾操作系统的所有重量和启动开销。

这就是说每个发行版都有它自己的官方docker图片( library ),这是与最小的二进制文件一起发货,考虑到docker的最佳实践,它已经准备好build立。

例:

如果你使用debian base image你可以使用你的软件包pipe理器和debian仓库。

相比之下,如果你使用centos base image ,你会有centos包装在你的处置。

请注意,上面的例子只是为了说明问题,并没有包括所有的区别。