在docker中,层(layer)和镜像(image)有何不同?

21 浏览
0 Comments

在docker中,层(layer)和镜像(image)有何不同?

我知道一张图片由许多层组成。

比如说,如果你运行“docker history [Image]”,你就可以得到一个 ID 序列,而位于顶部的 ID 就是图片的 ID,其余的 ID 则是层 ID。

在这种情况下,这些剩余的层 ID 是否对应着其他图片?如果是这样的话,我是否能够将一个层视为一张图片来查看?

admin 更改状态以发布 2023年5月22日
0
0 Comments

图层和镜像并不是严格等同的。
https://windsock.io/explaining-docker-image-ids/

当您从Docker Hub拉取镜像时,“图层”有“”镜像ID。
当您将更改提交到本地构建的镜像时,这些图层将具有镜像ID。直到您推送到Dockerhub。只有叶子镜像将为所有其他用户拉取您上传的镜像而具有镜像ID。

0
0 Comments

层(Layers)是组成Docker镜像和Docker容器文件系统的基础。

由于有了层,当你拉取一个镜像时,你通常不需要下载所有的文件系统。如果你已经有了另一个包含一些拉取镜像的层的镜像,那么只有缺失的层才会被真正地下载。

这些剩余的层ID是否对应于其他镜像?

是的,它们就像镜像一样,但没有任何标签来识别它们。

我能将一个层视为镜像吗?

是的


展示

docker pull busybox
docker history busybox

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
d7057cb02084        39 hours ago        /bin/sh -c #(nop) CMD ["sh"]                    0 B
cfa753dfea5e        39 hours ago        /bin/sh -c #(nop) ADD file:6cccb5f0a3b3947116   1.096 MB

现在,从层cfa753dfea5e创建一个新的容器,就好像它是一个镜像:

docker run -it cfa753dfea5e sh -c "ls /"

bin   dev   etc   home  proc  root  sys   tmp   usr   var

0