当我使用命令
docker images
在 docker 中列出图像时,它默认为全部并显示所有顶级图像,如 documentation 所说。我想知道什么是顶级图像和中级图像以及这些级别是如何定义的。谢谢你
Docker 镜像由一系列层组成(什么是 Docker 镜像“层”?)。这些层实际上以 Docker 镜像本身的形式存在,原则上,如果您知道它们的镜像 ID,就可以
docker run
它们(使用“经典”镜像生成器更容易)。每个图像都有一个父图像,这些图像形成一棵树,以完全不包含任何内容的特殊 scratch
图像为根。
docker images
默认情况下会列出带有名称的图像,以及没有子项的图像。
假设您正在处理构建的图像
FROM ubuntu:22.04
。您已经运行过几次 docker build
了。您的本地图像树包含:
000000 --> 123456 --> 234567 --> 345678 +-> 456789 --> 56789a
ubuntu:22.04 |
|
+-> 6789ab --> 789abc
my-app
如果你运行
docker images
,你会看到类似的东西
REPOSITORY TAG IMAGE ID
ubuntu 22.04 234567...
<none> <none> 56789a...
my-app latest 789abc...
原则上
docker images -a
会向您展示所有的中间层,但这几乎没有任何帮助。您会看到许多与各个 <none>
线相对应的 RUN
图像;你不能有用地docker run
他们,因为他们只完成了图像构建的一半,你不能docker rmi
他们,因为他们有子图像,他们会报告一个误导性的图像大小,该大小也计入他们的子图像图像。