一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就来谈谈关于软件测试中的“Docker镜像”。
什么是Docker镜像
Docker镜像是由文件系统叠加而成,最低端是一个引导文件系统,即bootfs,这个很像Linux/Unix的引导文件系统,Docker用户几乎永远不和引导文件系统有交互。Docker看起来很像一个Linux虚拟化栈,Docker镜像的第二层是root文件系统rootfs,它位于引导文件系统之上,rootfs可以是一种或多种操作系统。
在传统的Linux引导过程中,root文件系统会先以只读的方式加载,当引导结束并完成完整性检查后,它才会被切换成读写模式,但是在Docker中,root文件系统永远只能是只读状态,并且Docker利用联合加载(union mount)技术会在root文件系统层上加载更多的只读文件系统,联合加载指的是一次同时加载多个文件系统,但是在外面看起来只能看到一个文件系统。联合加载会将各层文件系统叠加到一起,这样最终的文件系统会包含所有底层的文件和目录。
Docker将这样的文件系统称为镜像,一个镜像可以放到另一个镜像的顶部,位于下面的镜像称之为父镜像(parent image),可以依次类推,直到镜像栈的最底部,最底部的镜像称之为基础镜像(baseimage)。最后当从一个镜像启支容器时,Docker会在该镜像的最顶层加载一个读写文件系统。
获取镜像
镜像是运行容器的前提, 官方的Docker Hub 网站已经提供了数十万个镜像供大家开放下载。本节主要介绍pecker 镜像的pull 子命令。可以使用docker [image] pull 命令直接从Docker Hub 镜像源来下载镜像。该命令的格式为:
docker [image] pull NAME [ :TAG]
NAME 是镜像仓库名称(用来区分镜像), TAG 是镜像的标签(往往用来表示版本信息) 。通常情况下, 描述一个镜像需要包括“名称+标签“ 信息。如果在下载镜像时没有标示版本,那么下载下来的将是最新版本,标签为latest。
下载过程中可以看出,镜像文件一般由若干层(layer)组成,427c82bd70cd这样的串是层的唯一id(实际上完整的id包括256比特,64个十六进制字符组成)。
可能有人会想到, 在不同的镜像仓库服务器的情况下,可能会出现镜像重名的情况。严格地讲,镜像的仓库名称中还应该添加仓库地址(即registry, 注册服务器)作为前缀,只是默认使用的是官方DockerHub服务,该前缀可以忽略。
例如, docker pull httpd命令相当于docker pull registry.hub.docker.com/httpd命令,即从默认的注册服务器DockerHub Registry中的httpd仓库来下载标记为latest的镜像。
今天关于“Docker镜像的使用以及获取”的内容就给大家讲解到这里,希望对做测试工作的小伙伴有帮助~欢迎大家每天和我一起学习更多涨薪技能哦。