我是 Docker 的新手,正在尝试准确了解 Docker 映像 是什么。 Docker 映像的每个定义都使用术语“层”,但似乎没有定义 层 的含义。
来自官方 Docker 文档:
我们已经看到 Docker 镜像是只读模板,Docker 容器是从该模板中启动的。每个图像由一系列层组成。 Docker 利用联合文件系统将这些层组合成一个图像。联合文件系统允许不同文件系统(称为分支)的文件和目录透明地重叠,形成一个单一的连贯文件系统。
所以我问,什么是层(确切地说);有人可以举几个具体的例子吗?这些层是如何“搭在一起”形成图像的?
原文由 smeeb 发布,翻译遵循 CC BY-SA 4.0 许可协议
我可能会迟到,但这是我的 10 美分(补充 ashishjain 的回答):
基本上,层或 图像层 是对图像或 中间图像 的更改。您指定的每个命令(
FROM
,RUN
,COPY
等)在您的 Dockerfile 中创建新的层会导致之前的图像发生变化。当您使用 git 时,您可以将其视为暂存更改:您添加一个文件的更改,然后是另一个,然后是另一个……考虑以下 Dockerfile:
首先,我们选择一个起始图像:
rails:onbuild
,它有很多 层。我们在起始图像上添加另一层,使用ENV
命令设置环境变量RAILS_ENV
。然后,我们告诉 docker 运行bundle exec puma
(启动 rails 服务器)。那是另一层。在构建图像时,层的概念会派上用场。因为图层是中间图像,所以如果您对 Dockerfile 进行更改,docker 将 仅 重建已更改的图层和之后的图层。这称为层缓存。
你可以 在这里 阅读更多关于它的信息。