docker部署harbor

Harbor介绍

Docker为代表的容器技术的出现,改变了传统的交付方式。通过把业务及其依赖的环境打包进Docker镜像,解决了开发环境和生产环境的差异问题,提升了业务交付的效率。如何高效地管理和分发Docker镜像?是众多企业需要考虑的问题

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,可以用来构建企业内部的Docker镜像仓库。

它在Docker的开源项目 Distribution的基础上,添加了一些企业需要的功能特性,如镜像同步复制、漏洞扫描和权限管理等。

docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。
 

Harbor架构图

  • 代理层:代理层实质上是一个 Nginx 反向代理,负责接收不同类型的客户端请求,包括浏览器、用户脚本、Docker 等,并根据请求类型和 URI 转发给不同的后端服务进行处理。
  • 功能层
    • Portal:是一个基于 Argular 的前端应用,提供 Harbor 用户访问的界面。
    • Core:是 Harbor 中的核心组件,封装了 Harbor 绝大部分的业务逻辑。
    • JobService:异步任务组件,负责 Harbor 中很多比较耗时的功能,比如 Artifact 复制、扫描、垃圾回收等。
    • Docker Distribution:Harbor 通过 Distribution 实现 Artifact 的读写和存取等功能。
    • RegistryCtl:Docker Distribution 的控制组件。
    • Notary(可选):基于 TUF 提供镜像签名管理的功能。
    • 扫描工具(可选):镜像的漏洞检测工具。
    • ChartMuseum(可选):提供 API 管理非 OCI 规范的 Helm Chart,随着兼容 OCI 规范的 Helm Chart 在社区上被更广泛地接受,Helm Chart 能以 Artifact 的形式在 Harbor 中存储和管理,不再依赖 ChartMuseum,因此 Harbor 可能会在后续版本中移除对 ChartMuseum 的支持。
  • 数据层
    • Redis:主要作为缓存服务存储一些生命周期较短的数据,同时对于 JobService 还提供了类似队列的功能。
    • PostgreSQL:存储 Harbor 的应用数据,比如项目信息、用户与项目的关系、管理策略、配置信息、Artifact 的元数据等等。
    • Artifact 存储:存储 Artifact 本身的内容,也就是每次推送镜像、Helm Chart 或其他 Artifact 时,数据最终存储的地方。默认情况下,Harbor 会把 Artifact 写入本地文件系统中。用户也可以修改配置,将 Artifact 存储在外部存储中,例如亚马逊的对象存储 S3、谷歌云存储 GCS、阿里云的对象存储 OSS 等等。

部署

harbor包下载地址:harbor包

#安装依赖
yum install docker-compose

#下载包
wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz

#https://ghproxy.com/是国内的几个GitHub代理加速网站,不用的话下的太慢了

#解压
tar xf harbor-offline-installer-v2.8.0.tgz 

#移到
mv harbor /usr/local/harbor
cd /usr/local/harbor/
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
....
 hostname: 192.168.100.10
....
 #https:
 #  port: 443
 #  certificate: /your/certificate/path
 #  private_key: /your/private/key/path
....
 harbor_admin_password: Harbor12345            #初始密码
....
 data_volume: /data/harbor                     #日志


#安装
[root@bogon harbor]# docker-compose up -d
[+] Running 10/10
 ⠿ Network harbor_harbor        Created                                                                         0.0s
 ⠿ Container harbor-log         Started                                                                         0.5s
 ⠿ Container registryctl        Started                                                                         1.3s
 ⠿ Container redis              Started                                                                         1.4s
 ⠿ Container harbor-portal      Started                                                                         1.0s
 ⠿ Container registry           Started                                                                         1.3s
 ⠿ Container harbor-db          Started                                                                         1.2s
 ⠿ Container harbor-core        Started                                                                         1.6s
 ⠿ Container harbor-jobservice  Started                                                                         2.2s
 ⠿ Container nginx              Started                                                                         2.2s




#最后看到
[root@bogon harbor]# docker-compose start
[+] Running 7/7
 ⠿ Container harbor-portal      Started                                                                       0.7s
 ⠿ Container registry           Started                                                                       0.7s
 ⠿ Container redis              Started                                                                       0.8s
 ⠿ Container registryctl        Started                                                                       0.8s
 ⠿ Container harbor-core        Started                                                                       0.3s
 ⠿ Container harbor-jobservice  Started                                                                       0.6s
 ⠿ Container nginx              Started                                                                       0.6s
[root@bogon harbor]# docker-compose ps
NAME                COMMAND                  SERVICE             STATUS               PORTS
harbor-core         "/harbor/entrypoint.…"   core                running (starting)   
harbor-db           "/docker-entrypoint.…"   postgresql          running (healthy)    
harbor-jobservice   "/harbor/entrypoint.…"   jobservice          running (starting)   
harbor-log          "/bin/sh -c /usr/loc…"   log                 running (healthy)    127.0.0.1:1514->10514/tcp
harbor-portal       "nginx -g 'daemon of…"   portal              running (starting)   
nginx               "nginx -g 'daemon of…"   proxy               running (starting)   0.0.0.0:80->8080/tcp, :::80->8080/tcp
redis               "redis-server /etc/r…"   redis               running (starting)   
registry            "/home/harbor/entryp…"   registry            running (starting)   
registryctl         "/home/harbor/start.…"   registryctl         running (starting)   
就装完了

浏览器访问192.168.100.10

Harbor修改密码

推行镜像

首先创建项目

 点击docker-images进入项目,划到推送命令,有相关命令 

在docker服务器上

[root@bogon harbor]# docker-compose images
Container           Repository                    Tag                 Image Id            Size
harbor-core         goharbor/harbor-core          v2.8.0              15f4066c1707        164MB
harbor-db           goharbor/harbor-db            v2.8.0              f3d4373617a2        179MB
harbor-jobservice   goharbor/harbor-jobservice    v2.8.0              1b00a3a474e1        140MB
harbor-log          goharbor/harbor-log           v2.8.0              f31ccc3d46f0        134MB
harbor-portal       goharbor/harbor-portal        v2.8.0              ae18a071cdce        133MB
nginx               goharbor/nginx-photon         v2.8.0              cfc2401896e1        126MB
redis               goharbor/redis-photon         v2.8.0              ef1f410f9255        127MB
registry            goharbor/registry-photon      v2.8.0              8bfd12c2163d        78.5MB
registryctl         goharbor/harbor-registryctl   v2.8.0              165749c6eedc        141MB

#将nginx:1.23.3推送到仓库
[root@bogon ~]# docker tag nginx:1.23.3 192.168.100.10/docker-images/nginx:1.23.3
[root@bogon ~]# docker push 192.168.100.10/docker-images/nginx:1.23.3 
The push refers to repository [192.168.100.10/docker-images/nginx]
Get "https://192.168.100.10/v2/": dial tcp 192.168.100.10:443: connect: connection refused

#可以看到这里报错了,这里报的是https协议,我们没有开启https协议
Get "https://192.168.100.10/v2/":

#需要编辑daemon.json
[root@bogon ~]# vim /etc/docker/daemon.json 
{
  "registry-mirrors": [
        "https://registry.hub.docker.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ],
  "insecure-registries": ["192.168.100.10:8888"],
  "insecure-registries": ["192.168.100.10"]
}

#登录
[root@bogon ~]# docker login 192.168.100.10
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

#上传
[root@bogon ~]# docker push 192.168.100.10/docker-images/nginx:1.23.3 
The push refers to repository [192.168.100.10/docker-images/nginx]
a1bd4a5c5a79: Pushed 
597a12cbab02: Pushed 
8820623d95b7: Pushed 
338a545766ba: Pushed 
e65242c66bbe: Pushed 
3af14c9a24c9: Pushed 
1.23.3: digest: sha256:557c9ede65655e5a70e4a32f1651638ea3bfb0802edd982810884602f700ba25 size: 1570
[root@bogon ~]# 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值