2019-10-29 06:31:45 +00:00
|
|
|
|
# Docker Registry
|
2014-09-12 08:17:56 +00:00
|
|
|
|
|
2017-12-03 02:26:28 +00:00
|
|
|
|
镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,[Docker Registry](../repository/registry.md) 就是这样的服务。
|
2014-09-12 08:17:56 +00:00
|
|
|
|
|
2019-03-08 04:21:07 +00:00
|
|
|
|
一个 **Docker Registry** 中可以包含多个 **仓库**(`Repository`);每个仓库可以包含多个 **标签**(`Tag`);每个标签对应一个镜像。
|
2014-09-26 06:08:26 +00:00
|
|
|
|
|
2017-02-16 03:11:24 +00:00
|
|
|
|
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 `<仓库名>:<标签>` 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 `latest` 作为默认标签。
|
2016-06-12 10:22:47 +00:00
|
|
|
|
|
2019-04-29 01:26:29 +00:00
|
|
|
|
以 [Ubuntu 镜像](https://hub.docker.com/_/ubuntu) 为例,`ubuntu` 是仓库的名字,其内包含有不同的版本标签,如,`16.04`, `18.04`。我们可以通过 `ubuntu:16.04`,或者 `ubuntu:18.04` 来具体指定所需哪个版本的镜像。如果忽略了标签,比如 `ubuntu`,那将视为 `ubuntu:latest`。
|
2014-09-26 06:08:26 +00:00
|
|
|
|
|
2016-11-07 21:57:30 +00:00
|
|
|
|
仓库名经常以 *两段式路径* 形式出现,比如 `jwilder/nginx-proxy`,前者往往意味着 Docker Registry 多用户环境下的用户名,后者则往往是对应的软件名。但这并非绝对,取决于所使用的具体 Docker Registry 的软件或服务。
|
2014-09-15 09:36:31 +00:00
|
|
|
|
|
2019-10-29 06:31:45 +00:00
|
|
|
|
## Docker Registry 公开服务
|
2014-09-15 09:36:31 +00:00
|
|
|
|
|
2016-11-07 21:57:30 +00:00
|
|
|
|
Docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
|
2016-11-07 20:10:11 +00:00
|
|
|
|
|
2019-01-06 02:15:13 +00:00
|
|
|
|
最常使用的 Registry 公开服务是官方的 [Docker Hub](https://hub.docker.com/),这也是默认的 Registry,并拥有大量的高质量的官方镜像。除此以外,还有 [CoreOS](https://coreos.com/) 的 [Quay.io](https://quay.io/repository/),CoreOS 相关的镜像存储在这里;Google 的 [Google Container Registry](https://cloud.google.com/container-registry/),[Kubernetes](https://kubernetes.io/) 的镜像使用的就是这个服务。
|
2016-11-07 20:10:11 +00:00
|
|
|
|
|
2017-12-29 01:22:07 +00:00
|
|
|
|
由于某些原因,在国内访问这些服务可能会比较慢。国内的一些云服务商提供了针对 Docker Hub 的镜像服务(`Registry Mirror`),这些镜像服务被称为**加速器**。常见的有 [阿里云加速器](https://cr.console.aliyun.com/#/accelerator)、[DaoCloud 加速器](https://www.daocloud.io/mirror#accelerator-doc) 等。使用加速器会直接从国内的地址下载 Docker Hub 的镜像,比直接从 Docker Hub 下载速度会提高很多。在 [安装 Docker](../install/mirror.md) 一节中有详细的配置方法。
|
2016-11-07 20:10:11 +00:00
|
|
|
|
|
2020-02-23 03:36:56 +00:00
|
|
|
|
国内也有一些云服务商提供类似于 Docker Hub 的公开服务。比如 [网易云镜像服务](https://c.163.com/hub#/m/library/)、[DaoCloud 镜像市场](https://hub.daocloud.io/)、[阿里云镜像库](https://cr.console.aliyun.com) 等。
|
2016-11-07 20:10:11 +00:00
|
|
|
|
|
2019-10-29 06:31:45 +00:00
|
|
|
|
## 私有 Docker Registry
|
2016-11-07 20:10:11 +00:00
|
|
|
|
|
2018-12-14 11:08:14 +00:00
|
|
|
|
除了使用公开服务外,用户还可以在本地搭建私有 Docker Registry。Docker 官方提供了 [Docker Registry](https://hub.docker.com/_/registry/) 镜像,可以直接使用做为私有 Registry 服务。在 [私有仓库](../repository/registry.md) 一节中,会有进一步的搭建私有 Registry 服务的讲解。
|
2016-11-07 20:10:11 +00:00
|
|
|
|
|
2016-11-07 21:57:30 +00:00
|
|
|
|
开源的 Docker Registry 镜像只提供了 [Docker Registry API](https://docs.docker.com/registry/spec/api/) 的服务端实现,足以支持 `docker` 命令,不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能。在官方的商业化版本 [Docker Trusted Registry](https://docs.docker.com/datacenter/dtr/2.0/) 中,提供了这些高级功能。
|
2016-11-07 20:10:11 +00:00
|
|
|
|
|
2019-03-08 04:21:07 +00:00
|
|
|
|
除了官方的 Docker Registry 外,还有第三方软件实现了 Docker Registry API,甚至提供了用户界面以及一些高级功能。比如,[Harbor](https://github.com/goharbor/harbor) 和 [Sonatype Nexus](../repository/nexus3_registry.md)。
|