当前位置: 首页 > news >正文

Docker 仓库详解与实战配置

Docker 仓库详解与实战配置

Docker 仓库(Registry)是用于存储、管理和分发 Docker 镜像的核心组件,根据访问权限可分为公有仓库私有仓库。本文将详细介绍主流仓库的特点、配置步骤及实战操作,包括 Docker Hub、阿里云公有仓库、Registry 私有仓库和 Harbor 企业级私有仓库。

一、Docker 仓库核心概念

1.1 仓库定义与作用

Docker 仓库本质是镜像存储与分发的中心化服务,核心作用包括:

  • 集中管理镜像版本(如 nginx:v1、nginx:v2);
  • 实现镜像的跨环境共享(开发→测试→生产);
  • 提供权限控制(如私有仓库限制镜像访问范围)。

1.2 仓库分类

分类

特点

典型代表

适用场景

公有仓库

公开访问,无需自建,部分提供免费存储

Docker Hub、阿里云公有仓库

个人学习、开源项目镜像分发

私有仓库

仅限内部访问,需自建或付费,安全性高

Registry、Harbor

企业内部项目、敏感业务镜像管理

二、公有仓库实战

公有仓库无需本地部署,直接使用第三方提供的服务,适合快速获取或分享公开镜像。国内常用阿里云公有仓库(解决 Docker Hub 访问慢问题)。

2.1 阿里云公有仓库(推荐)

阿里云容器镜像服务提供免费镜像仓库镜像加速器,支持国内快速访问,是企业和个人的首选公有仓库方案。

2.1.1 前期准备:创建阿里云镜像仓库
  1. 登录阿里云容器镜像服务控制台:https://cr.console.aliyun.com/;
  2. 创建命名空间(用于隔离不同项目 / 团队的镜像):
    • 进入「命名空间」→ 点击「创建命名空间」;
    • 命名空间名称:sy_rqtest(自定义,需唯一);
    • 访问级别:选择「私有」(仅授权用户可访问)。

      3.在命名空间下创建镜像仓库

    • 进入「镜像仓库」→ 点击「创建镜像仓库」;
    • 仓库名称:linux(自定义,如存储 Linux 相关镜像);
    • 仓库类型:选择「私有」;
    • 其他配置默认,完成创建。
2.1.2 镜像上传步骤
  1. 登录阿里云仓库(从仓库「基本信息」中获取登录指令):
# 格式:docker login --username=阿里云账号名 仓库地址docker login --username=suifengsl crpi-kr9pt9e25t372onc.cn-hangzhou.personal.cr.aliyuncs.com
    • 输入阿里云账号密码(若开启 2FA,需使用验证码登录),提示 Login Succeeded 即登录成功。

     2.为本地镜像添加标签(阿里云仓库要求镜像标签格式为「仓库地址 / 命名空间 / 仓库名:版本号」):

# 示例:将本地 httpd:latest 镜像标记为目标仓库的 test 版本docker tag httpd:latest crpi-kr9pt9e25t372onc.cn-hangzhou.personal.cr.aliyuncs.com/sy_rqtest/linux:test

     3.上传镜像到阿里云仓库

docker push crpi-kr9pt9e25t372onc.cn-hangzhou.personal.cr.aliyuncs.com/sy_rqtest/linux:test
    • 上传完成后,回到阿里云控制台「镜像仓库→版本管理」,可看到 test 版本的镜像。

2.1.3 镜像下载步骤

其他机器需使用镜像时,只需登录阿里云仓库并拉取:

# 登录仓库(同上传步骤1)docker login --username=suifengsl crpi-kr9pt9e25t372onc.cn-hangzhou.personal.cr.aliyuncs.com# 拉取镜像docker pull crpi-kr9pt9e25t372onc.cn-hangzhou.personal.cr.aliyuncs.com/sy_rqtest/linux:test

2.2 Docker Hub(官方公有仓库)

Docker Hub 是 Docker 官方维护的公有仓库,包含数百万公开镜像,但国内访问速度较慢,适合国外环境或学习使用。

2.2.1 核心特点
  • 免费提供公开仓库(所有人可访问),付费提供私有仓库
  • 支持自动构建(关联 GitHub/GitLab 仓库,代码提交后自动构建镜像);
  • 官方镜像(如 nginx、ubuntu)经过安全验证,优先选择。
2.2.2 基本操作
  1. 登录 Docker Hub
docker login # 默认登录 Docker Hub,输入账号密码

     2.上传镜像(标签格式:「Docker Hub 用户名 / 仓库名:版本号」):

# 示例:将本地 mynginx:v1 上传到用户 test 的 nginx 仓库docker tag mynginx:v1 test/nginx:v1docker push test/nginx:v1

      3.下载镜像

docker pull test/nginx:v1 # 拉取私有镜像需先登录docker pull nginx:latest # 拉取官方公开镜像无需登录

三、私有仓库实战(基础版:Registry)

Registry 是 Docker 官方提供的轻量级私有仓库镜像,仅包含核心存储功能,适合小型团队或简单场景使用。

3.1 部署 Registry 私有仓库

  1. 拉取 Registry 镜像(官方镜像名为 registry,推荐使用 2.x 版本):
docker pull registry:2

     2.启动 Registry 容器(需配置端口映射和自动重启):

docker run -itd \--restart always \ # 容器随 Docker 服务自动启动--name registry \ # 容器名-p 5000:5000 \ # 端口映射:宿主机 5000 → 容器 5000(Registry 默认端口)registry:2
    • 验证启动:docker ps | grep registry,若容器状态为 Up 则启动成功。

3.2 配置客户端信任私有仓库

Registry 默认使用 HTTP 协议,Docker 客户端默认拒绝非 HTTPS 的仓库访问,需手动添加信任:

  1. 修改 Docker 配置文件(所有需访问私有仓库的机器均需配置):
vim /etc/docker/daemon.json

     2.添加 insecure-registries 字段(指定私有仓库地址,格式为「IP: 端口」):

{"registry-mirrors": [ # 原有镜像加速器配置(可选)"https://docker.m.daocloud.io","https://dockerproxy.com"],"insecure-registries": ["192.168.100.20:5000"] # 私有仓库地址(替换为实际 IP)}

     3.重启 Docker 服务使配置生效:

systemctl daemon-reloadsystemctl restart docker
    • 重启后需重新启动 Registry 容器:docker start registry。

3.3 镜像上传与下载

3.3.1 上传镜像
  1. 为本地镜像添加标签(格式:「私有仓库地址 / 镜像名:版本号」):
docker tag httpd:latest 192.168.100.20:5000/test:v1

      2.上传镜像到私有仓库:

docker push 192.168.100.20:5000/test:v1
3.3.2 验证镜像存储

通过 HTTP 接口查看私有仓库中的镜像列表:

curl http://192.168.100.20:5000/v2/_catalog# 输出示例:{"repositories":["test"]}(表示仓库中有 test 镜像)# 查看 test 镜像的版本列表curl http://192.168.100.20:5000/v2/test/tags/list# 输出示例:{"name":"test","tags":["v1"]}
3.3.3 下载镜像

其他客户端机器配置信任后,直接拉取:

docker pull 192.168.100.20:5000/test:v1

3.4 Registry 局限性

  • 无图形化界面,需通过命令或 API 管理;
  • 无权限控制(默认所有人可上传 / 下载,需额外配置认证);
  • 无镜像同步、日志审计等企业级功能,适合简单场景。

四、企业级私有仓库实战(Harbor)

Harbor 是 VMware 开源的企业级 Docker 仓库,在 Registry 基础上扩展了图形化界面、权限管理、镜像同步、日志审计等功能,满足企业级镜像管理需求。

4.1 Harbor 核心组件与架构

Harbor 由多个组件协同工作,架构如下:

组件类型

组件名称

核心作用

代理层

Nginx

分发前端 UI 访问和镜像上传 / 下载流量

存储层

Registry v2

核心镜像存储服务

数据层

MySQL/PostgreSQL

存储用户权限、镜像元数据、审计日志

核心服务

Core Services(Admin Server)

提供 UI、API、认证(Auth)、Webhook 功能

辅助服务

Replication Job Service

实现多 Harbor 实例间的镜像同步

辅助服务

Log Collector

收集各组件日志,用于监控和问题排查

4.2 部署 Harbor(离线安装)

Harbor 提供离线安装包(包含所有依赖镜像),适合无外网环境,步骤如下:

4.2.1 前期准备
  1. 安装依赖:Harbor 依赖 docker 和 docker-compose(用于编排多组件容器):
# 确保 Docker 已安装(参考前文 Docker 部署章节)# 安装 docker-composeyum -y install docker-compose# 验证:docker-compose --version

    2.下载 Harbor 离线安装包

    • 官方下载地址:https://github.com/goharbor/harbor/releases(选择 harbor-offline-installer-*.tgz 包);
    • 国内备用地址:百度网盘(链接:https://pan.baidu.com/s/1YUbl_gHhiKpUfSwsIkWbZg,提取码:5669),下载 harbor-offline-installer-v1.10.10.tgz。

    3.解压安装包

tar -xzvf harbor-offline-installer-v1.10.10.tgzcd harbor # 进入解压后的目录(包含 harbor.yml 配置文件和 install.sh 安装脚本)
4.2.2 配置 Harbor

修改核心配置文件 harbor.yml,关键配置如下:

vim harbor.yml

设置访问地址:hostname 改为 Harbor 服务器的实际 IP(如 192.168.100.20):

hostname: 192.168.100.20

关闭 HTTPS(可选,测试环境简化配置)

注释掉 https 相关配置(生产环境建议启用 HTTPS,需准备 SSL 证书):

#https:# port: 443# certificate: /your/certificate/path# private_key: /your/private/key/path

设置管理员密码:修改 harbor_admin_password(默认密码为 Harbor12345,建议自定义):

harbor_admin_password: Harbor12345
4.2.3 安装并启动 Harbor
  1. 执行安装脚本
./install.sh
    • 脚本会自动加载离线镜像、生成配置文件并启动所有组件容器;
    • 安装成功提示:✔ ----Harbor has been installed and started successfully----。

     2.验证启动状态

docker-compose ps # 查看所有 Harbor 组件容器状态(均为 Up 则正常)
4.2.4 访问 Harbor 图形化界面
  1. 打开浏览器,访问 http://192.168.100.20(hostname 配置的地址);
  2. 登录:用户名 admin,密码为 harbor.yml 中配置的 Harbor12345;
  3. 创建项目:
    • 点击「项目→新建项目」;
    • 项目名称:test(自定义);
    • 访问级别:选择「私有」(仅授权用户可访问);
    • 点击「确定」,完成项目创建。

4.3 配置 Docker 客户端信任 Harbor

同 Registry 配置,需让 Docker 客户端信任 Harbor 的 HTTP 地址:

  1. 修改 Docker 配置文件(所有需访问 Harbor 的机器):
vim /etc/docker/daemon.json

  2.添加 Harbor 地址到 insecure-registries:

{"registry-mirrors": ["https://docker.m.daocloud.io","https://dockerproxy.com"],"insecure-registries": ["192.168.100.20"] # Harbor 地址(无端口,默认 80)}

     3.重启 Docker 服务

systemctl daemon-reloadsystemctl restart docker# 重启 Harbor 组件(Docker 重启后 Harbor 容器会停止)cd /harbor # 进入 Harbor 安装目录docker-compose start

4.4 镜像上传与下载(Harbor)

4.4.1 上传镜像
  1. 登录 Harbor(Docker 客户端执行):
docker login http://192.168.100.20
    • 输入 Harbor 用户名(如 admin)和密码,提示 Login Succeeded 即登录成功。

     2.为本地镜像添加标签(格式:「Harbor 地址 / 项目名 / 镜像名:版本号」):

# 示例:将本地 httpd:latest 标记为 test 项目的 test1:v1 版本docker tag httpd:latest 192.168.100.20/test/test1:v1

    3.上传镜像到 Harbor

docker push 192.168.100.20/test/test1:v1

    4.验证上传结果

    • 登录 Harbor 图形化界面→进入 test 项目→点击「镜像仓库」,可看到 test1 镜像及 v1 版本。

4.4.2 下载镜像

其他客户端机器配置信任后,登录并拉取:

# 登录 Harbordocker login http://192.168.100.20# 拉取镜像docker pull 192.168.100.20/test/test1:v1

4.5 Harbor 常用操作

操作需求

命令(需在 Harbor 安装目录执行)

启动 Harbor

docker-compose start

停止 Harbor

docker-compose stop

重启 Harbor

docker-compose restart

查看日志

docker-compose logs -f

卸载 Harbor

docker-compose down -v(删除容器和数据卷,谨慎执行)

五、三种仓库对比与选型建议

仓库类型

优点

缺点

适用场景

阿里云公有仓库

无需自建,国内访问快,支持免费私有仓库

依赖第三方服务,敏感镜像存在安全风险

个人学习、企业非敏感镜像分发

Registry 私有仓库

轻量级,部署简单,资源占用低

无图形化界面,无权限控制,功能单一

小型团队、测试环境、临时镜像管理

Harbor 私有仓库

企业级功能(图形化、权限管理、镜像同步),安全性高

部署复杂,资源占用较高(需多容器)

中大型企业、生产环境、敏感业务镜像管理

5.1 选型建议

  1. 个人 / 小团队学习:优先选择阿里云公有仓库(免费、国内访问快);
  2. 小型企业 / 测试环境:Registry 私有仓库(部署简单,满足基础需求);
  3. 中大型企业 / 生产环境:Harbor 私有仓库(企业级功能,安全可控)。

六、仓库管理最佳实践

6.1 镜像命名规范

统一的镜像命名规则可提高管理效率,建议格式:

[仓库地址/][项目名/][应用名]:[版本号]-[构建号]
  • 示例 1(公有仓库):cr.aliyuncs.com/sy_rqtest/web/nginx:v1.20-20231001
  • 示例 2(私有仓库):192.168.100.20/test/api-gateway:v2.1-58

命名要素说明

  • 仓库地址:区分不同仓库(如阿里云、Harbor);
  • 项目名:隔离不同项目(如 web、api);
  • 应用名:明确镜像对应的服务(如 nginx、mysql);
  • 版本号:主版本(v1)+ 次版本(20),体现功能迭代;
  • 构建号:CI/CD 自动生成(如日期、流水线编号),便于追溯构建来源。

6.2 镜像版本管理

  1. 避免使用 latest 标签:latest 默认为最新版本,但无法明确镜像内容,易导致环境不一致(建议用具体版本号,如 v1.0);
  2. 定期清理冗余镜像
    • 公有仓库:删除过时版本(保留近 3 个稳定版本);
    • 私有仓库:通过 Harbor 图形化界面或 API 批量删除不再使用的镜像;

     3.镜像安全扫描

    • Harbor 内置镜像扫描功能(菜单「项目→镜像仓库→扫描」),检测漏洞并及时更新基础镜像;
    • 集成第三方工具(如 Trivy),在 CI/CD 流程中自动扫描镜像安全性。

6.3 权限控制策略

  1. 公有仓库
    • 公开镜像:设置为「公有」,方便外部访问;
    • 私有镜像:仅授权团队成员访问(如阿里云仓库的「成员管理」功能)。

     2.Harbor 私有仓库

    • 按项目分配权限(如 test 项目仅允许开发组上传,测试组下载);
    • 创建角色并绑定权限(如「开发者」拥有上传 / 下载权限,「访客」仅拥有下载权限);
    • 启用「镜像拉取策略」:限制只有指定 IP 或账号可拉取敏感镜像。

七、总结

Docker 仓库是镜像生命周期管理的核心,本文介绍了主流仓库的部署与使用:

  1. 公有仓库:阿里云仓库适合国内场景,操作简单,支持免费私有空间;Docker Hub 适合国际环境,镜像资源丰富。
  2. 私有仓库:Registry 轻量易部署,适合基础需求;Harbor 提供企业级功能,适合生产环境。
  3. 最佳实践:统一镜像命名规范,合理管理版本,严格控制权限,定期安全扫描,确保镜像管理的高效与安全。

根据团队规模和业务需求选择合适的仓库类型,并结合 CI/CD 流程(如 Jenkins)实现镜像的自动构建、推送和部署,可进一步提升容器化应用的交付效率。

http://www.dtcms.com/a/465378.html

相关文章:

  • dockerfile实操案例
  • linux学习笔记(25)——线程安全
  • ubuntu20.04地平线OE3.2.0 GPU Docker使用
  • [VoiceRAG] Azure | 使用`azd`部署应用 | Dockerfile
  • Docker 环境下 GeoPandas/Fiona 报错
  • Docker简易教程
  • vps 网站发布直播软件app下载免费
  • DORIS 服务器宕机重启后出现的问题
  • 网络安全审计技术原理与应用
  • 手机上做网站南宁品牌网站设计公司
  • 第五部分:VTK高级功能模块(第135章 Imaging模块 - 图像处理类)
  • 如何通过 5 种有效方法同步 Android 和 Mac
  • AJAX 知识篇(2):Axios的核心配置
  • 招商网站建设公司申请注册商标的流程
  • 网页美工课程seo网站优化师
  • 海外关键词规划SEO工具
  • AI学习日记——卷积神经网络(CNN):卷积层与池化层的实现
  • iOS 26 系统流畅度实战指南|流畅体验检测|滑动顺畅对比
  • JS中new的过程发生了什么
  • 系统白名单接口添加自定义验证(模仿oauth2.0),防安全扫描不通过
  • 校园服装网站建设预算手机软件应用市场
  • 【AI论文】ExGRPO:从经验中学习进行推理
  • 连接两个世界:QIR——量子-经典混合计算的编译器桥梁
  • 怎样制作网页链接教程狼雨seo教程
  • 第1章:初识Linux系统——连接网络NAT模式
  • CSS3 动画:从入门到精通
  • 在JavaScript / HTML中,所有转义字符(字符实体)
  • shopnc本地生活o2o网站源码网站开发软件怎么做
  • Vue3+socket.io 项目本地vite配置
  • wangEditor