“为了将存储库推送到其注册表,您需要命名一个图像或将容器提交给命名的图像,如我们在此处看到的。”
“现在,您可以将此存储库推送到其名称或标记指定的注册表。”
那你怎么能将一个仓库推送到注册表呢?难道不是将镜像推送到仓库吗?
Docker registry是存储您的Docker镜像的服务。
Docker registry可以由第三方托管,作为公共或私有库。以下是一些常见的Docker registry:
或者您也可以自行搭建Docker registry
(详见https://docs.docker.com/ee/dtr/)。
Docker repository是具有相同名称但不同标签的不同docker镜像的集合。 标签是仓库中镜像的字母数字标识符。
例如,请参见https://hub.docker.com/r/library/python/tags/。官方Python镜像有许多不同的标签,这些标签都是Docker Hub上官方Python仓库的成员。Docker Hub是由Docker托管的Docker Registry。
要了解更多信息,请阅读:
注册表、仓库、镜像和标签
有一个用于存储镜像的层次结构系统。使用以下术语:
注册表
负责托管和分发镜像的服务。默认注册表是Docker Hub。
仓库
一组相关联的镜像(通常提供相同应用程序或服务的不同版本)。
标签
附加到仓库中镜像的字母数字标识符(例如 14.04 或 stable )。
因此,命令docker pull amouat / revealjs:latest
将从Docker Hub注册表下载位于amouat/revealjs
仓库中标记为latest的镜像。
ubuntu:latest
和 ubuntu:16.04
具有相同的“Image ID”,这意味着它们只是同一镜像的多个标签。 - wisbuckydocker pull
的文档,其中部分内容如下:“要下载特定的镜像或一组镜像(即存储库),请使用 docker pull
。如果未提供标签,则 Docker Engine 将使用 :latest
标签作为默认标签。” 那么,如何“下载一组镜像(即存储库)”呢? - Laird Nelson补充信息:
docker push
。namespace/repo-name:tag
进行标识。myregistryhost:5000/namespace/repo-name:tag
docker info |grep Registry
- Adam注册表
和镜像
。docker tag foo <registry>/<image>:<tag>
是相同的意思
docker tag foo <repository>:<tag>
ubuntu:latest
镜像:docker push
命令将上述每个镜像推送到您的存储库中。只要存储库名称匹配,它们就会成功推送,并出现在您选择的存储库下并正确标记。docker@my-docker-vm:/$ docker push mydockerhub/my-helloworld-repo:my_tag
The push refers to repository [docker.io/mydockerhub/my-helloworld-repo]
bf41e934d39d: Pushed
70d93396f87f: Pushed
6ec525dfd060: Pushed
705419d10b13: Pushed
a4aaef726d02: Pushed
04964fddc946: Pushed
latest: digest: sha256:eb93c92351bce785aa3ec0de489cfeeaafd55b7d90adf95ecea02629b376e577 size: 1571
docker@my-docker-vm:/$
如果您立即输入docker images --digests -a
,您可以确认您推送的镜像标签现在针对由Docker Hub注册表管理的私有仓库显示新的签名。
Docker Hub和其他第三方仓库托管服务都被称为“注册表”。注册表存储了一系列的代码仓库。
由于一个注册表可以拥有很多的代码仓库,而每个代码仓库又可以包含许多不同版本的相同镜像,这些镜像是通过标签逐个进行版本控制的。
myimagename myimagename:latest username/theirimagename:1.0 myrepo:5000/username/imagename:1.0
(我在这里说imagename,只是为了说明另一个主要的混淆源。当然,那就是repositoryname。抱歉。)
示例:
a)当您想要在构建时命名图像时,使用docker build -t thisname ...
——即-t表示标签(而不是-n表示名称)。
b)当您想要将该图像推送到注册表时,您需要将完整的URL(以registryname开头,以标记后缀结尾)作为标记:
docker tag thisname mylocalregistry:5000/username/repoimagething:1.0
现在,您可以通过以下方式推送称为thisname的图像:
docker push mylocalregistry:5000/username/repoimagething:1.0
git
,那么:hub.docker.com
)等同于 GitHub 上的“Repository”(github.com
);