在以下输出中运行命令docker images和docker images -a结果:
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 9cbaf023786c 2 days ago 192.8 MB
$ docker images -a
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 9cbaf023786c 2 days ago 192.8 MB
<none> <none> 03db2b23cf03 2 days ago 192.8 MB
<none> <none> 8f321fc43180 2 days ago 192.8 MB
<none> <none> 6a459d727ebb 2 days ago 192.8 MB
<none> <none> 2dcbbf65536c 2 days ago 192.8 MB
<none> <none> 97fd97495e49 2 days ago 192.6 MB
Run Code Online (Sandbox Code Playgroud)
图像是否标记<none>为重要?如果没有:为什么他们带有我拉的标记图像?尺寸加起来还是仅仅是一种复制?如果是这样,我可以删除它们而不影响我的工作吗?
sea*_*mcl 11
图像文件是独立的,并通过unionfs magic组合形成一个运行容器.您关注的图像通常标有令人难忘的名称.您可以删除未使用的图像,即那些对您关心的任何图像没有贡献的图像.我在bash中这样做:
function docker_rm_unnamed_images {
sudo docker rmi $(sudo docker images | grep '^<none>' | awk '{print $3}')
}
Run Code Online (Sandbox Code Playgroud)
您可以将docker图像视为"图层"堆栈.每个Dockerfile命令都会向图像添加一个附加图层.重要的是要意识到每个命令都会创建一个单独的图像文件.所以Dockerfile
FROM foo
RUN a
RUN b
RUN c
Run Code Online (Sandbox Code Playgroud)
将是一堆
image=1 (possibly pulled from the foo registry)
image=2 (after applying a to image 1)
image=3 (after applying b to image 2)
image=4 (after applying c to image 3)
Run Code Online (Sandbox Code Playgroud)
foo图像可能由多个其他图层组成,因此您的最终图像是4个或更多图像的堆叠.每个图像文件都存在于docker镜像注册表中.其中大多数都是未命名的,因为它们对应于例如RUN命令.每个图像文件1-4可能相当小(除非它们对应于例如yum install p1 .. p100).它们一起构成了最终运行的容器的文件系统.
| 归档时间: |
|
| 查看次数: |
2693 次 |
| 最近记录: |