百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

【Docker 新手入门指南】第九章:仓库管理

wptr33 2025-05-28 20:45 7 浏览

一、Docker Hub 高级功能实战

1.自动构建(Automated Builds)

  • 场景:代码仓库(如 GitHub/GitLab)更新时自动生成镜像,无缝集成 CI/CD。
  • 操作步骤

i.绑定代码仓库

登录 Docker Hub,进入 Repositories > Automated Builds

授权 Docker Hub 访问代码仓库(如 GitHub)。

ii.配置构建规则

选择代码仓库和分支,指定 Dockerfile 路径(默认根目录)。

示例:当 GitHub 仓库 main 分支更新时,自动构建
your-username/webapp:latest

iii.触发构建

推送代码至指定分支,Docker Hub 自动拉取代码并执行 docker build

2.组织(Organizations)与团队协作

  • 创建组织
# 网页端操作:
Docker Hub > Organizations > Create Organization
  • 权限管理

管理员:创建仓库、添加成员、分配角色(管理员/开发者)。

开发者:推送/拉取镜像、管理仓库标签。

  • 团队仓库示例
# 团队成员拉取组织仓库镜像 
docker pull my-company/webapp:v1
  1. 镜像版本管理
  • 标签策略

latest:最新稳定版(生产环境)。

dev/test:开发/测试版本(如
your-username/webapp:dev-202310
)。

语义化版本(SemVer):major.minor.patch(如 1.2.3)。

  • 删除旧版本
# 网页端:Docker Hub > 仓库 > Tags > 删除指定标签 
# 命令行(需先登录): 
docker rmi your-username/webapp:old-tag docker push your-username/webapp:new-tag

二、搭建私有 Docker 仓库

  1. 基于 docker-registry 的轻量级私有仓库
  • 步骤 1:运行私有仓库容器
docker run -d \
  -p 5000:5000 \
  --name my-registry \ 
    -v /data/registry:/var/lib/registry \ # 持久化存储镜像 
    registry:2
  • 验证仓库
# 拉取测试镜像并推送至私有仓库 
docker pull alpine:latest 
docker tag alpine:latest localhost:5000/my-alpine:v1 
docker push localhost:5000/my-alpine:v1
  1. 添加认证机制(用户名/密码)
  • 步骤 1:生成认证文件
# 安装 htpasswd(需先安装 apache2-utils) 
apt-get install apache2-utils -y 
# 创建用户(如 user:pass) 
htpasswd -B -c /auth/htpasswd user
  • 步骤 2:运行带认证的仓库
docker run -d \
 -p 5000:5000 \ 
--name my-registry \ 
-v /data/registry:/var/lib/registry \
 -v /auth/htpasswd:/auth/htpasswd \ # 挂载认证文件 
-e "REGISTRY_AUTH=htpasswd" \ 
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ 
registry:2
  • 登录私有仓库
docker login localhost:5000 -u user -p pass
  1. 配置 HTTPS(生产环境必备)
  • 步骤 1:准备 SSL 证书

自签名证书(测试用):

openssl req -newkey rsa:4096 -nodes -keyout domain.key -x509 -days 365 -out domain.crt

权威证书(如 Let's Encrypt):通过证书颁发机构获取。

  • 步骤 2:运行仓库容器(绑定证书)
docker run -d \
 -p 443:443 \
 --name my-registry \
 -v /data/registry:/var/lib/registry \
 -v /certs/domain.crt:/certs/domain.crt \
 -v /certs/domain.key:/certs/domain.key \
 -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" \ 
-e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" \ 
registry:2
  • 客户端信任证书(Linux)
cp domain.crt /etc/docker/certs.d/your-registry-domain.com/ca.crt 
systemctl restart docker

三、企业级仓库管理方案

  1. 镜像分层存储与垃圾回收
  • 清理未使用的镜像层
docker exec my-registry registry garbage-collect /etc/docker/registry/config.yml
  • 配置存储驱动
    config.yml 中指定存储后端(如 S3、OSS):
storage: 
    s3: 
        accesskey: YOUR_ACCESS_KEY 
        secretkey: YOUR_SECRET_KEY 
        bucket: my-docker-registry 
        region: us-east-1
  1. 镜像扫描与安全审计
  • 集成 Clair(开源漏洞扫描)
# 运行 Clair 容器 
docker run -d --name clair -p 6060:6060 clair:v4 
# 扫描镜像(需先推送至仓库) 
clairctl analyze your-username/webapp:latest
  • Docker Hub 内置扫描
    在 Docker Hub 仓库设置中启用 Vulnerability Scanning,自动检测镜像漏洞。
  1. 跨数据中心同步(镜像复制)
  • 使用 docker trust 实现镜像签名
docker trust sign your-username/webapp:v1
  • 跨仓库复制(如从 Hub 同步至私有仓库)
docker run --rm \
 -v /var/run/docker.sock:/var/run/docker.sock \
 docker.io/justincormack/registry-mirror \
 --source=docker.io \
 --source-repo=library/nginx \
 --dest=your-private-registry.com/library/nginx

四、公共仓库 vs 私有仓库:选型指南

维度

公共仓库(如 Docker Hub)

私有仓库(如 Harbor)

适用场景

开源项目、公共服务

企业内部应用、敏感数据

带宽消耗

依赖公网,可能较慢

内网传输,速度快

安全性

公开访问,需依赖用户权限

支持 HTTPS、ACL、RBAC、镜像加密

功能扩展

自动构建、Webhook

镜像扫描、复制、生命周期管理

代表产品

Docker Hub、Quay.io

Harbor、JFrog Artifactory、AWS ECR

五、常用命令速查表

操作

命令示例

登录 Docker Hub

docker login

推送镜像至 Hub

docker push your-username/repo:tag

拉取私有仓库镜像

docker pull private-registry.com/repo:tag

删除 Hub 镜像标签

docker rmi your-username/repo:tag

查看私有仓库镜像列表

curl -u user:pass private-registry.com/v2/_catalog

清理仓库垃圾

docker exec registry registry garbage-collect config.yml

通过以上实践,可实现从镜像构建、存储到分发的全流程管理,满足开发测试、持续集成及生产环境的不同需求。企业级场景下建议选择 Harbor 等增强型私有仓库,结合 CI/CD 流水线实现镜像的自动化管理与安全审计。

相关推荐

数据库基础:mysql主从集群搭建

文章首发于微信公众号:java架构师进阶之路前言:Mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的...

Mysql-cluster搭建

前期准备准备五台虚拟机:ip地址分别为:192.168.1.211管理节点192.168.1.64SQL节点192.168.1.65SQL节点192.168.1.70数据节点192.168.1...

mysql 主从数据库搭建

一、创建目录在dev/htb下面创建文件夹master01htb]#mkdirmysql/master01-p2)进入master01...

从零搭建高可用的 MySQL 主从复制架构(基于 Linux 实战指南)

背景在生产环境中,单点MySQL数据库容易成为性能瓶颈或单点故障源。搭建MySQL主从复制架构,可以实现读写分离、高可用,提升系统的整体稳定性与扩展性。...

「MySQL 8」MySQL 5.7都即将停只维护了,是时候学习一波MySQL 8了

MySQL8新特性选择MySQL8的背景:MySQL5.6已经停止版本更新了,对于MySQL5.7版本,其将于2023年10月31日停止支持。后续官方将不再进行后续的代码维护。另外,...

Mysql启动选项和配置文件

Mysql启动选项和配置文件Mysql启动方式下面的启动命令都需要依赖在Linux环境下配置的Mysql环境变量...

centos安装mysql操作手册

1.下载Mysql首先去Mysql官网下载安装包,网址https://dev.mysql.com/downloads/mysql/推荐大家下载Linux通用版本的,便于管理安装位置,也方便一台服务器...

MySQL安装

MySQL的安装过程因操作系统的不同而有所差异。以下是在几种常见操作系统上安装MySQL的基本步骤:Windows下载MySQL:访问MySQL官方网站下载页面:MySQLDownloads...

MySQL数据库安装教程

前言今天就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。...

MySQL学到什么程度?才有可以在简历上写精通

前言如今互联网行业用的最多就是MySQL,然而对于高级Web面试者,尤其对于寻找30k下工作的求职者,很多MySQL相关知识点基本都会涉及,如果面试中,你的相关知识答的模糊和不切要点,基...

一起免费考 MySQL OCP 认证啦

前言:在1995年,首个MySQL版本发布,为庆祝MySQL诞辰30周年,OracleUniversity在限定期间内推出了多个MySQL的免费培训课程与认证,其中也包括My...

教程2 | 制作用户管理系统

一、项目简介用户管理系统是一个基于C/S模式的小型管理系统,使用了GUI技术来实现管理系统的页面效果,该管理系统可以对用户的信息,比如姓名、年龄、密码和地址等进行增删改查操作。用户管理系统通过JDBC...

红帽Linux中安装mysql8详细步骤

注意:我写的解压路径和截图路径不一致,仅供参考先前往官网下载mysql8下载地址:https://dev.mysql.com/downloads/选择指定版本和系统下载命令...

MySQL主从配置

主从原理MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的。...

mysql的主从搭建以及实现主从切换方法

主从搭建的方法:a.准备两台服务器...