4.1.1 镜像
将Docker镜像理解为一个包含了OS文件系统和应用的对象会很有帮助。如果读者实际操作过,就会认为与虚拟机模板类似。虚拟机模板本质上是处于关机状态的虚拟机。在Docker世界中,镜像实际上等价于未运行的容器。如果读者是一名开发者,可以将镜像比作类(Class)。
在Docker主机上运行 docker image ls
命令。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
如果读者运行命令环境是刚完成Docker安装的主机,或者是Play With Docker,那么Docker主机中应当没有任何镜像,命令输出内容会如上所示。
在Docker主机上获取镜像的操作被称为拉取(pulling)。如果使用Linux,那么会拉取 ubuntu:latest
镜像;如果使用Windows,则会拉取 microsoft/powershell:nanoserver
镜像。
Linux: docker image pull ubuntn:latest
Windows: docker image pull microsoft/powershell:nanoserver
latest: Pulling from library/ubuntu
50aff78429b1: Pull complete
f6d82e297bce: Pull complete
275abb2c8a6f: Pull complete
9f15a39356d6: Pull complete
fc0342a94c89: Pull complete
Digest: sha256:fbaf303...c0ea5d1212
Status: Downloaded newer image for ubuntu:latest
再次运行 docker image ls
命令来查看刚刚拉取的镜像。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 00fd29ccc6f1 3 weeks ago 111MB
关于镜像的存储位置以及镜像内部构成,本书会在后续的章节中详细介绍。现在,读者只需知道镜像包含了基础操作系统,以及应用程序运行所需的代码和依赖包。刚才拉取的 ubuntu
镜像有一个精简版的Ubuntu Linux文件系统,其中包含部分Ubuntu常用工具。而Windows示例中拉取的 microsoft/powershell
镜像,则包含了带有PowerShell的Windows Nano Server操作系统。
如果拉取了如 nginx
或者 microsoft/iis
这样的应用容器,则读者会得到一个包含操作系统的镜像,并且在镜像中还包括了运行Nginx或IIS所需的代码。
重要的是,Docker的每个镜像都有自己的唯一ID。用户可以通过引用镜像的 ID
或名称来使用镜像。如果用户选择使用镜像ID,通常只需要输入ID开头的几个字符即可——因为ID是唯一的,Docker知道用户想引用的具体镜像是哪个。