写点什么

CentOS 部署 Harbor 镜像仓库

作者:程序员欣宸
  • 2022-10-21
    广东
  • 本文字数:3120 字

    阅读完需:约 10 分钟

CentOS部署Harbor镜像仓库

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

关于 Harbor

  • Harbor 是用于存储和分发 Docker 镜像的镜像仓库服务,相比 Docker Registry,Harbor 在安全、标识、管理等方面做了增强,更适合企业使用;


  1. 官方网站:https://goharbor.io/

  2. 官方开源:https://github.com/goharbor/harbor

环境信息

  • 今天要部署的 Harbor 版本是 1.9.0 ,本次部署用的机器信息如下:


  1. 操作系统:CentOS Linux release 7.7.1908

  2. Docker:19.03.2

  3. docker-compose:1.23.2

部署 Harbor

  • Harbor 官方提供了在线和离线两种安装方式,考虑到企业服务器有可能无法访问外网,因此选择离线安装更加实用;

  • 打开 Harbor 的 GitHub 仓库的 release 页面下载离线安装包,地址是:https://github.com/goharbor/harbor/releases ,如下图红框所示,我选择了最新版的 1.9.0:

  • 将离线安装包 harbor-offline-installer-v1.9.0.tgz 下载到电脑上,执行以下命令解压:


tar -zxvf harbor-offline-installer-v1.9.0.tgz
复制代码


  • 解压的结果是个名为 harbor 的文件夹,进入该文件夹;

  • 修改配置文件 harbor.yml ,主要是修改以下两个配置:a. hostname:填写本机的 IP 地址或者 hostname,如果已经和域名绑定了也可以填域名;b. harbor_admin_password:管理员初始密码;更多配置例如 https、存储等,请参考官方文档按需设置;

  • 开始安装,在 install.sh 文件所在目录执行命令 ./install.sh 即可安装 Harbor,部署成功的控制台信息如下:


Creating network "harbor_harbor" with the default driverCreating harbor-log ... doneCreating registryctl   ... doneCreating registry      ... doneCreating harbor-db     ... doneCreating redis         ... doneCreating harbor-portal ... doneCreating harbor-core   ... doneCreating nginx             ... doneCreating harbor-jobservice ... done
✔ ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at http://192.168.50.167. For more details, please visit https://github.com/goharbor/harbor .
复制代码


  • 此时应该有九个容器正常运行:


[root@vostro ~]# docker psCONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS                 PORTS                       NAMESdac02ab21a1f        goharbor/harbor-jobservice:v1.9.0                   "/harbor/harbor_jobs…"   3 hours ago         Up 3 hours (healthy)                               harbor-jobservice998fa5676a08        goharbor/nginx-photon:v1.9.0                        "nginx -g 'daemon of…"   3 hours ago         Up 3 hours (healthy)   0.0.0.0:80->8080/tcp        nginxbc87d9a5a7f7        goharbor/harbor-core:v1.9.0                         "/harbor/harbor_core"    3 hours ago         Up 3 hours (healthy)                               harbor-corece495560ef35        goharbor/harbor-db:v1.9.0                           "/docker-entrypoint.…"   3 hours ago         Up 3 hours (healthy)   5432/tcp                    harbor-db25a13fddd607        goharbor/harbor-portal:v1.9.0                       "nginx -g 'daemon of…"   3 hours ago         Up 3 hours (healthy)   8080/tcp                    harbor-portalb9f72d4da022        goharbor/redis-photon:v1.9.0                        "redis-server /etc/r…"   3 hours ago         Up 3 hours (healthy)   6379/tcp                    redis3804003153ae        goharbor/harbor-registryctl:v1.9.0                  "/harbor/start.sh"       3 hours ago         Up 3 hours (healthy)                               registryctld8d570e88874        goharbor/registry-photon:v2.7.1-patch-2819-v1.9.0   "/entrypoint.sh /etc…"   3 hours ago         Up 3 hours (healthy)   5000/tcp                    registry2d940d7fd271        goharbor/harbor-log:v1.9.0                          "/bin/sh -c /usr/loc…"   3 hours ago         Up 3 hours (healthy)   127.0.0.1:1514->10514/tcp   harbor-log
复制代码


  • 由于 Harbor 的 web 服务使用了宿主机的 80 端口,所以在浏览器直接输入宿主机的 IP 地址即可访问 Harbor 的 web 管理页面,账号是 admin ,密码是前面设置的 harbor_admin_password 的值(默认是 Harbor12345):

  • 登录成功后发现空空如也,也是,目前还没啥东西:

允许 http 连接

  • 接下来我们要验证 Harbor 服务是否可用,验证方式是从另一台 Linux 电脑(下面称之为 A 电脑)远程推送镜像到 Harbor 机器;

  • Harbor 默认是不允许 http 连接的,这里可以修改设置来支持 http 连接,以便后续的验证操作;

  • 如果要从 A 电脑连接 Harbor 服务器,那么要对 A 电脑做设置,这里 A 电脑是 Linux 操作系统;

  • 编辑 A 电脑的 /etc/docker/daemon.json 文件(如果不存在就新建),增加以下内容,192.168.50.167 是 Harbor 服务器的 IP 地址:


{  "insecure-registries":["192.168.50.167"]}
复制代码


  • 重启使配置生效:


systemctl daemon-reload  && systemctl restart docker
复制代码


  • 再次提醒: 这里修改是远程连接 Harbor 服务的机器的配置,而不是 Harbor 服务器的配置;

推送镜像到 Harbor

  • 接下来验证 Harbor 的服务,在 A 电脑上尝试将本机的镜像推送到 Harbor;

  • 登录 A 电脑,选个本地镜像用来测试,我这里有个名为 jenkinsci/blueocean:1.19.0 的本地镜像,ID 为 11e2757c8bc1


root@hedy:~# docker imagesREPOSITORY                          TAG                 IMAGE ID            CREATED             SIZEjenkinsci/blueocean                 1.19.0              11e2757c8bc1        7 days ago          553MB
复制代码


  • 执行以下命令,将选定的本地镜像修改名称和 TAG:


docker tag 11e2757c8bc1 192.168.50.167/library/jenkinsci/blueocean:1.19.0
复制代码


  • 上述命令中,192.168.50.167 是安装 harbor 的时候,harbor.yml 文件中配置的 hostname 的值,library 是 harbor 默认的项目名称;

  • 执行以下命令即可从 A 电脑登录 Harbor:


docker login 192.168.50.167 -u admin -p Harbor12345
复制代码


  • 执行命令 docker push 192.168.50.167/library/jenkinsci/blueocean:1.19.0


root@hedy:~# docker push 192.168.50.167/library/jenkinsci/blueocean:1.19.0The push refers to repository [192.168.50.167/library/jenkinsci/blueocean]2963284ab4ce: Pushing [================================================>  ]  58.27MB/60.25MBc4a4de444fad: Pushing [========>                                          ]  47.87MB/267.6MB850b4f512dc8: Pushed abdaf43f94b6: Pushed a6a27b82134d: Pushed d6bee87a74b8: Pushed 28c6bdb5fda9: Pushed bb25d1c7cc8a: Pushed e2419390abaa: Pushing [========================>                          ]  37.29MB/77.36MBd6982687f77e: Pushed c9659702491d: Pushed ed4e100c24a1: Pushing [==========================================>        ]  36.71MB/43.37MBceaf9e1ebef5: Pushing [======>                                            ]  12.58MB/99.29MB9b9b7f3d56a0: Waiting f1b5933fe4b5: Waiting
复制代码


  • 上传完毕,登录 Harbor 网页,可以看到新上传的镜像:

  • 至此,实战完毕,在您搭建 Harbor 服务的时候希望本文能给您一些参考。

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 2022-10-21阅读数: 33
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018-04-19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
CentOS部署Harbor镜像仓库_Docker_程序员欣宸_InfoQ写作社区