Docker层减少了什么?
Docker图像是通过层从基础图像创建的,在导出过程中,每个层都会转储到最终存档中 理论上(对于本地开发环境也是如此),它可以节省驱动器空间 分层是否提高了容器旋转时间?我可以想象,如果1-2GB的现代“mikro服务”映像共享基本映像,并且已有一个正在运行,那么您可能无法解压缩这些映像 分层能节省内存吗 我认为Docker分层是营销的废话。我无法想象一个真正的大型云提供商中的容器管理器会关心在物理主机上旋转容器,使其具有与已经工作的容器相同的基本映像Docker层减少了什么?,docker,Docker,Docker图像是通过层从基础图像创建的,在导出过程中,每个层都会转储到最终存档中 理论上(对于本地开发环境也是如此),它可以节省驱动器空间 分层是否提高了容器旋转时间?我可以想象,如果1-2GB的现代“mikro服务”映像共享基本映像,并且已有一个正在运行,那么您可能无法解压缩这些映像 分层能节省内存吗 我认为Docker分层是营销的废话。我无法想象一个真正的大型云提供商中的容器管理器会关心在物理主机上旋转容器,使其具有与已经工作的容器相同的基本映像 直到最近,谷歌才推出了96个vCPU产品。
直到最近,谷歌才推出了96个vCPU产品。我不知道通常的vCPU配置,但可以想象,大型玩家要求4-8-16 vCPU,这是每个主机所有可用CPU资源的一半/四分之一。容器管理器(如Kubernates/Mesos)是否真的不仅考虑了可用的资源,而且还考虑了已在使用的基本图像?我认为您对docker图像层感到困惑 首先,它们不会被归档或打包(仅当您将其导出到tarball中时)。节省空间不是docker层的主要目的 但还是会的。就像您想要运行4个MySQL容器一样,docker不会创建文件副本来运行4次MySQL。另一个好处是可重用性 例如,如果你有两个图像,并且都使用了
ubuntu:latest
image,即使你会看到你的图像大小,比如说500和600mb。由于ubuntu的图像大小约为250mb,您的实际图像大小分别约为250mb和450mb
当您更新映像并尝试将其部署到云中时,这会有所帮助。如果层已经在远程中,Docker不会推送整个图像。它只会推送在最新图像中找到的修改层
其次,分层并不能节省内存。这完全取决于应用程序。层只是文件系统。它提供运行应用程序所需的文件 当你谈论docker push时,你是指docker注册表吗?如果是裸露的WEB服务器,您将不会拥有注册表的智能性,并且需要将整个图像(所有层)上载到文件存储,对吗?我的结论是Docker分层仅用于本地开发。它没有在真正的云环境中使用,也没有为容器的生产使用提供任何好处。@gavenkoa如果您更改代码中的某些内容,请考虑一下后续将映像推送到web服务器的情况。Docker将跟踪这些层中的更改。大多数情况下,只需上传小于5mb的图像,而不是整个图像(取决于您编写Dockerfile的方式)。