Docker Harbor(私有仓库)-篇一

0. Docker原生私有仓库—— Registry
1.1 Registry的简单了解

关于Docker的仓库分为私有库和公有仓库,共有仓库只要在官方注册用户,登录即可使用。但对于仓库的使用,企业还是会有自己的专属镜像,所以私有库的搭建也是很有必要的存在。

对于原生的仓库,Docker提供了Registry,它能帮助我们组建属于自己的私有库,但是缺点也比较明显,就是难管理,无法进行复杂的操作

1.2 Registry的部署过程
步骤一:拉取相关的镜像
docker pull registry
docker pull joxit/docker-registry-ui  #非必须,简单的界面
步骤二:进行 Registry的相关部署
#部署Registry容器
[root@localhost ~]# docker run -d -p 5000:5000 --restart always -v dockerImages:/var/lib/registry --name registry registry

#部署简单的界面容器,注意修改成自己的IP地址
[root@localhost ~]# docker run -p 80:80 --name registry-ui --link registry:registry -e NGINX_PROXY_PASS_URL="http://192.168.200.110:5000" -e DELETE_IMAGES="true"  -e REGISTRY_TITLE="Registry" --restart always  -d joxit/docker-registry-ui
 
步骤三:镜像的推送
#推送的镜像打标签
[root@localhost ~]# docker tag nginx 192.168.200.110:5000/nginx:latest
 
#尝试推送
[root@localhost ~]# docker push 192.168.200.110:5000/nginx:latest
The push refers to repository [192.168.200.110:5000/nginx]
Get "https://192.168.200.110:5000/v2/": dial tcp 192.168.200.110:5000: connect: connection refused

# 开启非安全认证
 vim /etc/docker/daemon.json
{
  "insecure-registries" : [ "192.168.200.110:5000" ],
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
 
#配置生效
systemctl restart docker
 
#再次推送
[root@localhost registry]# docker push 192.168.200.110:5000/nginx:latest
The push refers to repository [192.168.200.110:5000/nginx]
9d907f11dc74: Pushed 
79974a1a12aa: Pushed 
f12d4345b7f3: Pushed 
935b5bd454e1: Pushed 
fb6d57d46ad5: Pushed 
ed7b0ef3bf5b: Pushed 
latest: digest: sha256:f2fee5c7194cbbfb9d2711fa5de094c797a42a51aa42b0c8ee8ca31547c872b1 size: 1570
      
#通web进入
http://192.168.200.110

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DA6LADba-1685416729110)(DOCKER.assets/image-20230421113829656.png)]

1.什么是 Harbor ?
  • Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。
  • Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。
  • Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml。
2.Harbor的特性:
  1. 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
  2. 基于策略的复制:可以基于具有多个过滤器(存储库,标记和标签)的策略在多个注册表实例之间复制(同步)图像和图表。如果遇到任何错误,Harbor会自动重试复制。非常适合负载平衡,高可用性,多数据中心,混合和多云场景。
  3. 漏洞扫描:Harbor定期扫描图像并警告用户漏洞。
  4. 基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。
  5. 支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理。
  6. OIDC支持:Harbour利用OpenID Connect(OIDC)来验证由外部授权服务器或身份提供商进行身份验证的用户的身份。可以启用单点登录以登录Harbor门户。
  7. 镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。
  8. 公证人:可以确保图像的真实性。
  9. 图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。
  10. 审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  11. 支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
  12. Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。
3.Harbor的构成:

Harbor 在架构上主要有 Proxy、Registry、Core services、Database(Harbor-db)、Log collector(Harbor-log)、Job services 六个组件。

1)Proxy: Harbor 的 Registry、 UI、Token 服务等组件,都处在nginx反向代理后边。该代理将来自浏览器、docker clients
的请求转发到后端不同的服务上。

2)Registry:负责储存Docker 镜像,并处理Docker push/pull命令。由于要对用户进行访问控制,即不同用户对Docker 镜像
有不同的读写权限,Registry 会指向一个Token 服务,强制用户的每次Docker pull/push 请求都要携带一个合法的Token,
Registry会通过公钥对Token进行解密验证。

3)Core services:Harbor的核心功能,主要提供以下3个服务:

  • UI (harbor-ui) :提供图形化界面,帮助用户管理Registry上的镜像 (image) ,并对用户进行授权。
  • WebHook:为了及时获取Registry上image 状态变化的情况,在Registry上配置 Webhook, 把状态变化传递给 UI 模块。
  • Token 服务:负责根据用户权限给每个Docker push/pull 命令签发Token。 Docker 客户端向Registry 服务发起的请求,如果不包含Token,会被重定向到 Token 服务,获得 Token 后再重新向Registry 进行请求。

4)Database (harbor -db) :为core services提供数据库服务,负责储存用户权限、审计日志、Docker 镜像分组信息等数据。

5)Job services:主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上。

6)Log collector (harbor-log) :负责收集其他组件的日志到一个地方。

Harbor 的每个组件都是以 Docker 容器的形式构建的,因此,使用 Docker Compose 来对它进行部署。

​总共分为7个容器运行,通过在 docker- compose.yml 所在目录中执行 docker-compose ps命令来查看,
名称分别为:nginx、 harbor-jobservice、 harbor-ui、 harbor-db、 harbor-adminserver、registry、 harbor-log。

​其中 harbor-adminserver 主要是作为一个后端的配置数据管理,并没有太多的其他功能。
​harbor-ui 所要操作的所有数据都通过 harbor-adminserver 这样一个数据配置管理中心来完成。
4.Docker-compose 安装

下载需要docker-compose版本
docker-compose 官方文档
docker-compose 下载地址
docker-compose 发版地址

1)、yum
#添加 epel 源
yum install -y epel-release

#安装docker-compose
yum install -y docker-compose*

#查看 docker-compose 版本
docker-compose --version

2)、apt
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
 
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 sudo apt update
 apt-get install docker-compose* -y
3)、脚本
# 下载
sudo curl -L https://github.com/docker/compose/releases/download/v2.3.4/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

#创建软连接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

#添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 查看版本
docker-compose --version

5.Docker安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun


# 查看版本
[root@localhost ~]# docker -v
Docker version 23.0.3, build 3e7cbfd

#启动docker
systemctl start docker && service docker start

#设置docker服务开机启动
systemctl enable docker 

#查看docker状态
systemctl status docker && service docker status

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值