github编辑

仓库

一句话理解 Registry

Docker Registry 是存储和分发 Docker 镜像的服务,类似于代码的 GitHub 或包管理的 npm。

镜像构建完成后,可以在当前机器上运行。但如果需要在其他服务器上使用这个镜像,就需要一个集中的存储和分发服务——这就是 Docker Registry。

核心概念

Registry、仓库、标签的关系

┌─────────────────────────────────────────────────────────────────────┐
│                         Docker Registry                             │
│                      (如 Docker Hub)                               │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │  Repository(仓库): nginx                                    │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐         │   │
│  │  │ :latest │  │ :1.25   │  │ :1.24   │  │ :alpine │   ...   │   │
│  │  │  (tag)  │  │  (tag)  │  │  (tag)  │  │  (tag)  │         │   │
│  │  └─────────┘  └─────────┘  └─────────┘  └─────────┘         │   │
│  └─────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │  Repository(仓库): mysql                                    │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐                      │   │
│  │  │ :latest │  │ :8.0    │  │ :5.7    │   ...                │   │
│  │  └─────────┘  └─────────┘  └─────────┘                      │   │
│  └─────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────┘
概念
说明
示例

Registry

存储镜像的服务

Docker Hub、ghcr.io

Repository(仓库)

同一软件的镜像集合

nginxmysqlmycompany/myapp

Tag(标签)

仓库内的版本标识

latest1.25alpine

镜像的完整名称

示例:

💡 笔者提示:如果不指定 Registry 地址,默认使用 Docker Hub。如果不指定标签,默认使用 latest

公共 Registry 服务

Docker Hub(默认)

Docker Hubarrow-up-right 是最大的公共 Registry,也是 Docker 的默认 Registry。

特点

  • 拥有大量官方镜像arrow-up-right(nginx、mysql、redis 等)

  • 免费账户可以创建公开仓库

  • 付费账户支持私有仓库

其他公共 Registry

Registry
地址
说明

GitHub Container Registry

ghcr.io

GitHub 提供,与 GitHub Actions 集成好

Google Container Registry

gcr.io

Google Cloud 提供,Kubernetes 镜像常用

Quay.io

quay.io

Red Hat 提供

阿里云容器镜像服务

registry.cn-*.aliyuncs.com

国内访问快

腾讯云容器镜像服务

ccr.ccs.tencentyun.com

国内访问快

镜像加速器

由于网络原因,在国内直接访问 Docker Hub 可能会很慢。可以配置镜像加速器(Registry Mirror)来加速下载。

详细配置方法请参考镜像加速器章节。

⚠️ 笔者提醒:镜像加速器的可用性经常变化,使用前建议先测试是否可用。

私有 Registry

对于企业用户,通常需要搭建私有 Registry 来存储内部镜像。

官方 Registry 镜像

Docker 官方提供了 registryarrow-up-right 镜像,可以快速搭建私有 Registry:

企业级解决方案

官方 Registry 功能较为基础,企业环境常用以下方案:

方案
特点

CNCF 项目,功能全面(用户管理、漏洞扫描、镜像签名)

支持多种制品类型(Docker、Maven、npm 等)

云厂商服务

阿里云 ACR、腾讯云 TCR、AWS ECR 等

笔者建议:

  • 小团队:可以先用官方 Registry,够用即可

  • 中大型团队:推荐 Harbor,功能完善且开源免费

  • 已使用云服务:直接用云厂商的 Registry 服务更省心

镜像的推送和拉取

完整工作流程

常用命令

镜像的安全性

使用官方镜像

Docker Hub 的官方镜像arrow-up-right(标有 "Official Image" 标识)经过 Docker 团队审核,相对更安全。

镜像签名

使用 Docker Content Trust (DCT) 验证镜像来源:

漏洞扫描

本章小结

概念
要点

Registry

存储和分发镜像的服务

仓库(Repository)

同一软件的镜像集合

标签(Tag)

版本标识,默认为 latest

Docker Hub

默认的公共 Registry

私有 Registry

企业内部使用,推荐 Harbor

现在你已经了解了 Docker 的三个核心概念:镜像容器和仓库。接下来,让我们开始安装 Docker,动手实践!

延伸阅读

最后更新于