Docker镜像是否是完整的操作系统? 容器VS虚拟机
在dockerregistry有像ubuntu
或redhat
名字的图像。 这些映像是否运行完整的操作系统,还是只包含操作系统附带的实用程序?
我以为Docker使用主机操作系统,Docker镜像不应该运行操作系统。 请澄清。
Docker containers
将一个软件包装在一个完整的filesystem
,该filesystem
包含运行所需的所有东西:代码,运行时,系统工具,系统库 – 任何可以安装在服务器上的东西。
像FreeBSD Jails
和Solaris Zones
, Linux containers
是独立的执行环境 – 具有独立的CPU,内存,块I / O和networking资源(使用CGROUPS
内核function) – 共享主机操作的内核系统 。 结果是感觉像一个virtual Machine
,但摆脱了来宾操作系统的所有重量和启动开销。
这就是说每个发行版都有它自己的官方docker
图片( library
),这是与最小的二进制文件一起发货,考虑到docker
的最佳实践,它已经准备好build立。
例:
如果你使用debian base image
你可以使用你的软件包pipe理器和debian
仓库。
相比之下,如果你使用centos base image
,你会有centos
包装在你的处置。
请注意,上面的例子只是为了说明问题,并没有包括所有的区别。