加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:41:48 所属栏目:安全 来源:网络整理
导读:当我从存储库中获取一个docker图像时,看到它带有一些带有一些ID的图层但是当我尝试使用docker run运行它时它会告诉我它无法找到它. 我的问题是这样的,我可以运行一个docker图像的某一层,我可以通过docker history ,像古生物学家一样挖掘寻找有趣的东西? 我

当我从存储库中获取一个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阅读有关图层的更多信息

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读