Docker是一个开源的容器技术,可以用来构建、发布和运行应用程序。通过使用Docker镜像,用户可以简单、快捷地下载和安装预先构建好的应用程序或者容器环境。
Docker镜像是由多个层(Layer)组成的,每一层都包含了一个文件系统的快照。当用户pull下Docker镜像时,实际上就是从Docker Registry中获取镜像的所有层,并将其组合起来构建成完整的Docker镜像。
那么,Docker镜像在本地存储的位置是什么呢?本文将为您详细介绍。
首先,我们需要查看当前本地的Docker镜像列表。在终端输入下面命令:
docker images
执行后,将会列出本机上所有的Docker镜像列表,包括镜像ID、镜像名称、镜像标签、镜像大小等信息。如下图所示:
从上图可以看出,每个镜像都有一个唯一的ID、一个名称和一些标签(也称为版本)。其中,REPOSITORY字段表示镜像的名称,TAG字段表示镜像的标签,IMAGE ID字段则是该镜像的唯一标识符。
在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 COMMENT 84cf8d0a2e04 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下来放在哪里的详细内容。更多信息请关注PHP中文网其他相关文章!