我可以运行docker图像的中间层吗?

前端之家收集整理的这篇文章主要介绍了我可以运行docker图像的中间层吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

当我从存储库中获取一个docker图像时,看到它带有一些带有一些ID的图层但是当我尝试使用docker run运行它时它会告诉我它无法找到它.

我的问题是这样的,我可以运行一个docker图像的某一层,我可以通过docker history< image_id>,像古生物学家一样挖掘寻找有趣的东西?

我做了什么:

docker pull ruby
Using default tag: latest
latest: Pulling from library/ruby
693502eb7dfb: Already exists 
081cd4bfd521: Already exists 
5d2dc01312f3: Already exists 
54a5f7da9a4f: Pulling fs layer 
168cf3f33330: Pulling fs layer 
021d84fef638: Pulling fs layer 
168c3c107cd1: Waiting 
f001b782a027: Waiting

然后 :

docker run --rm -it 5d2dc01312f3 bash
Unable to find image '5d2dc01312f3:latest' locally

当我拉动我已经构建和发布的图像时,这个问题对我来说很明显,我可以清楚地看到一层有大约1.2go的大小,而且我从我用来构建的机器上复制了一些文件的层.图像和下一层我清理并删除了一些文件,因为我正在清理图像,但图像的总大小约为1.5go,这意味着大脂肪层是1.2go是我只是想看看我是否可以窥视那个脂肪层.

不,你不能运行一个图层,你只能运行一个图像.所以这取决于是否存在与该层关联的中间图像!

这是一个典型的场景:

>您在主机上构建图像:中间图像将是
为此图层创建(这是为docker构建缓存完成的)
>将图像推送到注册表:仅推送最终图像(引用所有图层),但不推送任何中间图像.
>您将图像拉到另一台主机上:最终图像(包含所有图层)现在可在其他主机上使用.您可以通过运行docker history< image-id>来显示其图层.

拉动图像时看到的摘要是图层的摘要,它们不是中间图像.

值< missing>在docker history输出的image列中意味着没有与这些层关联的图像,因此没有什么可以真正运行.

除非图像构建在相同的docker主机(或docker cache was distributed)上,否则docker守护程序将不允许访问这些图层

您可以在explaining-docker-image-ids阅读有关图层的更多信息

猜你在找的Docker相关文章