在docker中,层(layer)和镜像(image)有何不同?
在docker中,层(layer)和镜像(image)有何不同?
我知道一张图片由许多层组成。
比如说,如果你运行“docker history [Image]”,你就可以得到一个 ID 序列,而位于顶部的 ID 就是图片的 ID,其余的 ID 则是层 ID。
在这种情况下,这些剩余的层 ID 是否对应着其他图片?如果是这样的话,我是否能够将一个层视为一张图片来查看?
admin 更改状态以发布 2023年5月22日
图层和镜像并不是严格等同的。
https://windsock.io/explaining-docker-image-ids/
当您从Docker Hub拉取镜像时,“图层”有“”镜像ID。
当您将更改提交到本地构建的镜像时,这些图层将具有镜像ID。直到您推送到Dockerhub。只有叶子镜像将为所有其他用户拉取您上传的镜像而具有镜像ID。
层(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