docker是一个开源的容器技术,可以用来构建、发布和运行应用程序。通过使用docker镜像,用户可以简单、快捷地下载和安装预先构建好的应用程序或者容器环境。
docker镜像是由多个层(layer)组成的,每一层都包含了一个文件系统的快照。当用户pull下docker镜像时,实际上就是从docker registry中获取镜像的所有层,并将其组合起来构建成完整的docker镜像。
那么,docker镜像在本地存储的位置是什么呢?本文将为您详细介绍。
查看docker镜像列表首先,我们需要查看当前本地的docker镜像列表。在终端输入下面命令:
docker images
执行后,将会列出本机上所有的docker镜像列表,包括镜像id、镜像名称、镜像标签、镜像大小等信息。如下图所示:
从上图可以看出,每个镜像都有一个唯一的id、一个名称和一些标签(也称为版本)。其中,repository字段表示镜像的名称,tag字段表示镜像的标签,image id字段则是该镜像的唯一标识符。
查看docker镜像存储位置在docker中,每个镜像都是由多个层(layer)组成的。因此,当用户下载或者构建一个docker镜像时,实际上是将镜像的所有层下载到本地存储中。
而在linux系统中,docker镜像实际上是存储在/var/lib/docker目录下的。在终端输入下面命令:
sudo ls -l /var/lib/docker/
执行后,终端将会显示出/var/lib/docker/目录下所有的文件和文件夹列表。其中,/var/lib/docker/image文件夹是docker储存镜像的主要位置。如下图所示:
在/var/lib/docker/image/overlay2/imagedb/content/sha256目录下,存储了所有已下载的docker镜像(以镜像id命名),即所有层的存储位置。在每个镜像id目录下,都有一个名为“real”或者“diff”文件,代表该层的存储位置。
确认镜像层存储位置对于docker镜像的每一层,其存储位置可以通过执行下面的命令来确认:
docker history <image_name>:<tag>
例如,对于nginx镜像,执行命令:
docker history nginx:latest
将会输出以下结果:
image created created by size comment84cf8d0a2e04 3 weeks ago /bin/sh -c #(nop) cmd ["nginx" "-g" "daemon… 0b<missing> 3 weeks ago /bin/sh -c #(nop) stopsignal sigterm 0b<missing> 3 weeks ago /bin/sh -c #(nop) expose 80 0b<missing> 3 weeks ago /bin/sh -c ln -sf /dev/stdout /var/log/nginx… 22b<missing> 3 weeks ago /bin/sh -c set -x && apt-get update && ap… 68.2mb<missing> 3 weeks ago /bin/sh -c #(nop) env njs_version=2.1.0.6 0b<missing> 3 weeks ago /bin/sh -c #(nop) env nginx_version=1.16.1 0b<missing> 4 weeks ago /bin/sh -c #(nop) label maintainer=nginx do… 0b<missing> 4 weeks ago /bin/sh -c #(nop) cmd ["bash"] 0b<missing> 4 weeks ago /bin/sh -c #(nop) add file:7fbfce9f6a99e63a5… 63.2mb
其中,每一层的size字段表示该层的实际占用空间大小。该命令输出结果的第一列就是docker镜像每一层的id,从上到下依次代表镜像的各个层。
我们可以根据这个命令的输出结果,确认每一层具体的存储位置。例如,在上述命令的输出结果中,最后一列是该层的描述信息,其中包括了该层的原始命令和参数。
对于nginx镜像的第一层(id为“84cf8d0a2e04”),该层的cmd为“cmd [nginx -g daemon…””,即启动nginx服务;对于后面的各层,则是其它一些配置或命令。因此,我们可以大致猜测docker镜像每一层的存储位置。
总结通过上述命令,用户可以在linux系统下查看本地存储的docker镜像。docker镜像的层以镜像id为文件夹名存放在/var/lib/docker/image/overlay2/imagedb/content/sha256目录中。每一层分别存储在“real”或者“diff”文件中。
对于每一层镜像的存储位置,可以通过执行docker history命令查看,在输出结果中寻找该层的描述信息,从而大致猜测该层的存储位置。
在使用docker镜像和容器时,了解docker镜像的存储位置,可以更好地管理本地存储空间,以及对docker镜像和容器进行备份和恢复操作。
以上就是查看docker镜像pull下来放在哪里的详细内容。