文章目录
-
- 一、Docker Registry(镜像仓库)
- 二、镜像仓库分类
-
- 2.1 是否对外开放
- 2.2 供应商和面向群体
- 三、镜像仓库工作机制
-
- 3.1 镜像仓库使用流程
- 3.2 实际研发中镜像仓库如何使用
- 3.3 镜像仓库的拉取机制
- 四、常用的镜像仓库
-
- 4.1 Docker Hub
- 4.2 国内镜像源
- 4.3 私有仓库
- 五、镜像仓库命令
-
- 5.1 命令清单
- 5.2 命令详解
-
- 5.2.1. docker login
- 5.2.2. docker pull
- 5.2.3. docker push
- 5.2.4. docker search
- 5.2.5. docker logout

一、Docker Registry(镜像仓库)
镜像仓库(Docker Registry)负责存储、管理和分发镜像,并且提供了登录认证能力,建立了仓库的索引。
镜像仓库管理多个 Repository,Repository 通过命名来区分。每个 Repository 包含一个或多个镜像,镜像通过镜像名称和标签(Tag)来区分。
核心层级关系:
-
镜像仓库(Registry): 最上层是「镜像仓库(Registry)」:比如 hub.docker.com,一个 Registry 可以包含多个「仓库(Repository)」,同时自带认证能力(登录 / 登出)和索引功能(检索镜像)。
-
仓库(Repository): 每个「Repository」是同一镜像的所有版本集合:比如 nginx 仓库包含 nginx:1.20.1、nginx:1.19.1 等不同版本;ubuntu 仓库包含 ubuntu:18.04、ubuntu:20.04 等。
-
镜像: 每个版本对应「镜像名称 + 标签(Tag)」:比如 nginx:latest 是具体的镜像标识。 镜像的组成一个容器镜像由两部分构成:
镜像的组成: 一个容器镜像由两部分构成
二、镜像仓库分类
2.1 是否对外开放
2.2 供应商和面向群体
三、镜像仓库工作机制
3.1 镜像仓库使用流程
3.2 实际研发中镜像仓库如何使用
Docker Registry 中的镜像通常由开发人员制作,而后推送至“公共”或“私有”Registry 上保存,供其他人员使用(如部署到生产环境)。具体流程涉及以下环境: 
- 开发环境:开发人员编写代码、制作镜像的环境。
- 测试环境:需求开发完成后,将镜像拉取到该环境进行测试(pull to test)。
- 预发布环境:版本测试完成后,发布到与生产环境类似的该环境,提前模拟生产发布。
- 生产环境:将通过测试的镜像拉取到该环境,正式面向客户提供服务(pull to deploy)。
3.3 镜像仓库的拉取机制
启动容器时,Docker Daemon 会先试图从本地获取相关镜像;若本地镜像不存在,会从 Registry 中下载该镜像并保存到本地,供后续使用。
四、常用的镜像仓库
4.1 Docker Hub
Docker Hub 是 Docker 提供的托管存储库服务,用于查找容器映像并与团队共享,具有以下核心功能:
- 个人可注册私有仓库,发布自己制作的镜像。
- 提供镜像检索能力,支持按关键词查找所需镜像。
- 提供海量官方和认证组织的镜像(如 Nginx、MySQL 等官方镜像)。
- 支持从 GitHub 和 Bitbucket 自动构建容器镜像,并将其推送到 Docker Hub。
- 支持 Webhook(基于 HTTP 的回调函数,当指定事件发生时,服务器会自动将相关有效负载发送到客户端的 Webhook URL)。
4.2 国内镜像源
国内从 Docker Hub 拉取镜像有时会因网络问题变慢,可配置国内镜像加速器。国内主流云服务商均提供镜像加速器服务,例如:
- 阿里云加速器:登录阿里云控制台 → 进入“镜像工具” → “镜像加速器” → 复制加速器地址。
- 网易云加速器地址:https://hub-mirror.c.163.com
- 百度云加速器地址:https://mirror.baidubce.com
配置步骤
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
# 加载配置
sudo systemctl daemon-reload
# 重启 Docker
sudo systemctl restart docker
# 查看 Docker 状态,确认重启成功
sudo systemctl status docker
4.3 私有仓库
私有镜像仓库是部署在公司或组织内部,用于存储、分发自身应用 Docker 镜像的仓库。在企业自动化发布系统中,从安全角度出发,应用打包镜像通常仅存储在私有仓库,CI/CD 流程通过向私有仓库上传和拉取镜像衔接。
常见的私有仓库工具:
五、镜像仓库命令
5.1 命令清单
| docker login | – | 登录镜像仓库 | 登录私有仓库或需认证的公有仓库时必备 |
| docker pull | docker image pull | 从镜像仓库拉取镜像 | 获取所需镜像的核心命令 |
| docker push | docker image push | 将本地镜像推送至镜像仓库 | 分享或备份镜像时使用 |
| docker search | – | 从 Docker Hub 查找镜像 | 需注意:国内因网络原因,该命令可能无法实操,需国外网络支持 |
| docker logout | – | 登出镜像仓库 | 退出当前登录的仓库,保障账号安全 |
5.2 命令详解
5.2.1. docker login
- 功能:登录到 Docker 镜像仓库,未指定仓库地址时,默认为官方仓库 Docker Hub(国内需注意网络问题,建议使用国内镜像仓库练习)。
- 语法:
docker login [OPTIONS] [SERVER]
- 关键参数:
- -u:指定登录的用户名。
- -p:指定登录的密码。
- 样例:
docker login -u 用户名 -p 密码
5.2.2. docker pull
- 功能:从镜像仓库拉取或更新指定镜像。
- 语法:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
- 别名:
docker image pull
- 关键参数:
- -a:拉取该镜像的所有 tagged 版本。
- –disable-content-trust:忽略镜像的校验(默认开启校验)。
- 样例:
# 拉取 nginx 1.23.3 版本镜像
docker pull nginx:1.23.3
5.2.3. docker push
- 功能:将本地镜像上传到镜像仓库,需先通过 docker login 登录仓库。
- 语法:
docker push [OPTIONS] NAME[:TAG]
- 别名:
docker image push
- 关键参数:
- -a:推送该镜像的所有 tagged 版本。
- –disable-content-trust:忽略镜像的校验(默认开启校验)。
- 样例:
# 将本地 myapache:v1 镜像推送到仓库
docker push myapache:v1
5.2.4. docker search
- 功能:从 Docker Hub 查找镜像(国内需国外网络支持,否则无法实操)。
- 语法:
docker search [OPTIONS] TERM
- 关键参数:
- –no-trunc:显示完整的镜像描述,避免截断。
- -f <过滤条件>:按条件过滤结果(如列出收藏数不小于指定值的镜像)。
- 样例:
# 从 Docker Hub 查找所有名称包含 nginx,且 star 数大于 10 的镜像
docker search -f stars=10 nginx
5.2.5. docker logout
- 功能:登出 Docker 镜像仓库,未指定仓库地址时,默认为官方仓库 Docker Hub(国内建议搭配国内镜像仓库练习)。
- 语法:
docker logout [SERVER]
- 样例:
# 登出默认仓库(Docker Hub)
docker logout
# 登出指定仓库(如阿里云镜像仓库)
docker logout registry.cn-hangzhou.aliyuncs.com



