Dockerregistry和存储库之间的区别

我很困惑dockerregistry和仓库之间的区别。 看起来Docker文档可以交换使用这两个词。 此外,存储库有时也被称为图像,例如来自他们的文档的图像:

为了将存储库推送到其registry中,您需要命名图像或将容器提交给命名图像,如我们在此处所见。

现在,您可以将此存储库推送到由其名称或标记指定的registry。

你怎么能把一个版本库推送到registry中? 你不是把图像推送到存储库吗?

Dockerregistry是一个存储你的泊坞窗图像的服务。

Dockerregistry可以由第三方托pipe,如公共或私有registry,如以下registry之一:

  • Docker Hub ,
  • docker ,
  • Google容器registry ,
  • AWS容器registry

或者你可以自己托pipedockerregistry
(有关更多详细信息,请参阅https://docs.docker.com/docker-trusted-registry/ )。

Docker存储库是具有相同名称的不同Docker镜像的集合,具有不同的标签。 标记是存储库中图像的字母数字标识符。

例如,请参阅https://hub.docker.com/r/library/python/tags/ 。 官方的Python映像有许多不同的标签,这些标签都是Docker Hub上的官方Python仓库的成员。 Docker Hub是由Docker托pipe的Docker Registry。

要了解更多信息,请阅读:

从“ 使用Docker开发和部署带有容器的软件 ”一书

注册pipe理机构,存储库,图像和标签

有一个分级系统来存储图像。 使用以下术语:

注册处

负责托pipe和分发图像的服务。 默认的registry是Docker Hub。

知识库

相关图像的集合(通常提供相同应用程序或服务的不同版本)。

标签

附加到存储库中图像的字母数字标识符(例如,14.04或稳定)。

因此,命令docker pull amouat/revealjs:latest将从Docker Hubregistry中下载最近在amouat/revealjs存储库中标记的图像。

补充信息:

  • 您通常将存储库推送到registry(以及作为其一部分的所有图像)。 但是,您可以将单个图像推送到registry。 在所有情况下,您都使用docker push
  • 图像具有十二进制数字的图像ID,但也可以通过: namespace/repo-name:tag
  • 映像全名可以select以registry主机名和端口作为前缀: myregistryhost:5000/namespace/repo-name:tag
  • 一个通用的命名约定是使用你的registry用户名作为我所谓的“命名空间”。

docker库是一个可爱的registryimage组合。

 docker tag foo <registry>/<image>:<tag> 

是相同的

 docker tag foo <repository>:<tag>