6.2.6 镜像命名和标签
只需要给出镜像的名字和标签,就能在官方仓库中定位一个镜像(采用“:”分隔)。从官方仓库拉取镜像时, docker image pull
命令的格式如下。
docker image pull <repository>:<tag>
在之前的Linux示例中,通过下面的两条命令完成 Alpine
和 Ubuntu
镜像的拉取。
docker image pull alpine:latest
docker image pull ubuntu:latest
这两条命令从alpine和ubuntu仓库拉取了标有“latest”标签的镜像。
下面的示例展示了如何从官方仓库拉取不同的镜像。
$ docker image pull mongo:3.3.11
//该命令会从官方Mongo库拉取标签为3.3.11的镜像
$ docker image pull redis:latest
//该命令会从官方Redis库拉取标签为latest的镜像
$ docker image pull alpine
//该命令会从官方Alpine库拉取标签为latest的镜像
关于上述命令,需要注意以下几点。
首先,如果没有在仓库名称后指定具体的镜像标签,则Docker会假设用户希望拉取标签为 latest
的镜像。
其次,标签为 latest
的镜像没有什么特殊魔力!标有 latest
标签的镜像不保证这是仓库中最新的镜像!例如, Alpine
仓库中最新的镜像通常标签是 edge
。通常来讲,使用 latest
标签时需要谨慎!
从非官方仓库拉取镜像也是类似的,读者只需要在仓库名称面前加上Docker Hub的用户名或者组织名称。下面的示例展示了如何从 tu-demo
仓库中拉取 v2
这个镜像,其中镜像的拥有者是Docker Hub账户 nigelpoulton
,一个不应该被信任的账户。
$ docker image pull nigelpoulton/tu-demo:v2
//该命令会从以我自己的Docker Hub账号为命名空间的tu-demo库中下载标签为v2的镜像
在之前的Windows示例中,使用下面的两条命令拉取了PowerShell和.NET镜像。
> docker image pull microsoft/powershell:nanoserver
> docker image pull microsoft/dotnet:latest
第一条命令从 microsoft/powershell
仓库中拉取了标签为 nanoserver
的镜像,第二条命令从 microsoft/dotnet
仓库中拉取了标签为 latest
的镜像。
如果读者希望从第三方镜像仓库服务获取镜像(非Docker Hub),则需要在镜像仓库名称前加上第三方镜像仓库服务的DNS名称。假设上面的示例中的镜像位于Google容器镜像仓库服务(GCR)中,则需要在仓库名称前面加上 gcr.io
,如 docker pull gcr.io/nigelpoulton/tu-demo:v2
(这个仓库和镜像并不存在)。
读者可能需要拥有第三方镜像仓库服务的账户,并在拉取镜像前完成登录。