什么是 Docker 镜像“层”?

新手上路,请多包涵

我是 Docker 的新手,正在尝试准确了解 Docker 映像 是什么。 Docker 映像的每个定义都使用术语“层”,但似乎没有定义 的含义。

来自官方 Docker 文档

我们已经看到 Docker 镜像是只读模板,Docker 容器是从该模板中启动的。每个图像由一系列层组成。 Docker 利用联合文件系统将这些层组合成一个图像。联合文件系统允许不同文件系统(称为分支)的文件和目录透明地重叠,形成一个单一的连贯文件系统。

所以我问,什么是层(确切地说);有人可以举几个具体的例子吗?这些层是如何“搭在一起”形成图像的?

原文由 smeeb 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 452
1 个回答

我可能会迟到,但这是我的 10 美分(补充 ashishjain 的回答):

基本上,层或 图像层 是对图像或 中间图像 的更改。您指定的每个命令( FROMRUNCOPY 等)在您的 Dockerfile 中创建新的层会导致之前的图像发生变化。当您使用 git 时,您可以将其视为暂存更改:您添加一个文件的更改,然后是另一个,然后是另一个……

考虑以下 Dockerfile:

 FROM rails:onbuild
ENV RAILS_ENV production
ENTRYPOINT ["bundle", "exec", "puma"]

首先,我们选择一个起始图像: rails:onbuild ,它有很多 。我们在起始图像上添加另一层,使用 ENV 命令设置环境变量 RAILS_ENV 。然后,我们告诉 docker 运行 bundle exec puma (启动 rails 服务器)。那是另一层。

在构建图像时,层的概念会派上用场。因为图层是中间图像,所以如果您对 Dockerfile 进行更改,docker 将 重建已更改的图层和之后的图层。这称为层缓存。

你可以 在这里 阅读更多关于它的信息。

原文由 David Castillo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏