专栏首页运维ABCDocker实践(二):Harbor搭建私有Registry

Docker实践(二):Harbor搭建私有Registry

前言:

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由VMware中国研发团队负责开发的开源企业级Registry项目。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全,提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

环境说明:

主机名

操作系统版本

IP地址

docker版本

docker-compose版本

harbor版本

说明

ubuntu1604

Ubuntu 16.04.5

172.27.9.31

18.09.2

1.23.2

v1.7.4-ce6a6237

harbor服务器

docker02

Ubuntu 16.04.5

172.27.9.38

18.09.2

/

/

docker主机

centos7

centos7

172.27.9.181

/

/

/

NFS服务器

ubuntu安装详见Ubuntu16.04.5以lvm方式安装全记录

docker安装详见:Ubuntu16.04安装Docker

1.Harbor安装前准备

安装docker-compose

root@ubuntu1604:/# sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
root@ubuntu1604:/# chmod +x /usr/local/bin/docker-compose

Docker Compose是Docker官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。

测试docker-compose

root@ubuntu1604:~# docker-compose --version

介质下载

离线安装:https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.4.tgz

在线安装:https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.4.tgz

解压

root@ubuntu1604:/opt# tar -zxvf harbor-offline-installer-v1.7.4.tgz

将介质上传至/opt目录并解压

2.NFS配置

安装nfs软件

root@ubuntu1604:~# apt-get install nfs-common -y

挂载

root@ubuntu1604:~# showmount -e 172.27.9.181 
root@ubuntu1604:~# mkdir /data
root@ubuntu1604:~# mount -t nfs 172.27.9.181:/nfs /data/

新建挂载点/data并挂载nfs共享目录/nfs,/data为harbor默认的数据文件路径,所有镜像文件都保存在该文件中。

NFS配置详见:Centos7下NFS服务器搭建及客户端连接配置

3.生成证书

为实现https方式访问,需生成证书

创建证书存放目录

root@ubuntu1604:~# mkdir -p /data/cert && cd /data/cert

创建 CA 根证书

root@ubuntu1604:/data/cert# openssl req  -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt -subj "/C=CN/L=zhejiang/O=lisea/CN=harbor-registry"

生成证书签名

root@ubuntu1604:/data/cert# openssl req -newkey rsa:4096 -nodes -sha256 -keyout loong576.com.key -out server.csr -subj "/C=CN/L=zhejiang/O=lisea/CN=loong576.com"

访问域名设置为loong576.com

生成主机证书

root@ubuntu1604:/data/cert# openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out loong576.com.crt

查看证书

拷贝证书

将证书拷贝至所有需要登录Harbor的docker主机

root@ubuntu1604:~# mkdir -p /etc/docker/certs.d/loong576.com
root@ubuntu1604:~# cp /data/cert/loong576.com.crt /etc/docker/certs.d/loong576.com/ca.crt

新建目录/etc/docker/certs.d/loong576.com,将证书loong576.com.crt拷贝并重命名为ca.crt

4.Harbor安装

配置Harbor

修改harbor.cfg文件

root@ubuntu1604:~# view /opt/harbor/harbor.cfg
hostname = loong576.com
ui_url_protocol = https
ssl_cert = /data/cert/loong576.com.crt
ssl_cert_key = /data/cert/loong576.com.key

设置域名为loong576.com(/etc/hosts文件已新增配置:172.27.9.31    loong576.com),访问方式为https,证书为之前生成的证书

安装Harbor

root@ubuntu1604:/opt/harbor# ./install.sh

安装共有4步,最后会提示安装成功并告知访问地址。

若以后想修改配置文件harbor.cfg,可按如下步骤执行:

root@ubuntu1604:/opt/harbor#  docker-compose down -v
root@ubuntu1604:/opt/harbor#  vim harbor.cfg
root@ubuntu1604:/opt/harbor#  ./prepare 
root@ubuntu1604:/opt/harbor#  docker-compose up -d

访问Harbor

访问地址:https://loong576.com

浏览器会提示不安全的证书,因为我们是自己当CA机构,所以浏览器会不信任,添加信任即可。默认密码是admin/Harbor12345。浏览器所在电脑记得编辑host文件,新增:172.27.9.31    loong576.com

5.Harbor测试

新建项目myproject

新建项目myproject并设置为公开

拉取镜像

从Docker Hub拉取镜像centos:7

root@ubuntu1604:~# docker pull centos:7

标记镜像

root@ubuntu1604:~# docker tag centos:7 loong576.com/myproject/centos7

将镜像标记为loong576.com/myproject,推送时Docker会将其解释为仓库的位置

登陆仓库

root@ubuntu1604:/etc/docker/certs.d/loong576.com# docker login loong576.com

密码会被保存,下次会免密登陆。

推送镜像

root@ubuntu1604:~# docker push loong576.com/myproject/centos7

页面查看镜像

拉取镜像

在docker02(172.27.9.38)拉取镜像centos7,在做此操作前需进行前文的“拷贝证书”操作。

root@docker02:~# docker pull loong576.com/myproject/centos7

查看拉取的镜像

root@docker02:~# docker image ls

删除镜像

直接web页面删除镜像

日志查看

至此完成Harbor私有仓库搭建。

6.后续

可安装Harborclient工具,用命令行方式进行管理。

Harbor通过Web界面可以方便地管理用户、租户以及镜像仓库等资源,但是缺乏开发人员更喜爱的命令行管理工具,Harborclient是Harbor的第三方扩展开源工具,正弥补Harbor不足,它适合开发和运维人员管理镜像仓库、项目等资源。

安装及使用:https://github.com/int32bit/python-harborclient/blob/master/README.zh.md

本文参考:

https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

https://docs.docker.com/registry/insecure/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Docker实践(三):数据持久化及共享

     在Linux上运行的Docker有三种不同的方式将数据从 Docker Host挂载到 Docker 容器,并实现数据的读取和存储:volumes、bind ...

    loong576
  • Docker实践(一):Ubuntu16.04安装Docker

    Docker分为开源免费的CE(Community Edition)版本和收费的EE(Enterprise Edition)版本,本文安装社区版,该版本也是开发...

    loong576
  • Docker实践(四):Docker Machine

     Docker Machine是Docker官方三剑客项目之一,负责使用docker容器的第一步:在多种平台上快速安装和维护docker运行环境。它支持多种平台...

    loong576
  • 时间序列分解和异常检测方法应用案例

    我们最近有一个很棒的机会与一位伟大的客户合作,要求Business Science构建一个适合他们需求的开源异常检测算法。业务目标是准确地检测各种营销数据的异常...

    拓端
  • 微信开发本地内网调试方法 转

    ZhangXianSheng
  • Go 常见并发模式实现(一):调度后台处理任务的作业程序

    关于 Go 语言并发编程基本概念和 Goroutine、Channel 以及锁机制的使用,学院君在 Go 入门教程并发编程章节已经详细介绍过了,这里主要演示通过...

    学院君
  • 这段代码很Pythonic | 相见恨晚的 itertools 库

    小小科
  • 这段代码很Pythonic | 相见恨晚的 itertools 库

    最近事情不是很多,想写一些技术文章分享给大家,同时也对自己一段时间来碎片化接受的知识进行一下梳理,所谓写清楚才能说清楚,说清楚才能想清楚,就是这个道理了。

    IT派
  • Java程序员们最常犯的10个错误

    将数组转化为一个列表时,程序员们经常这样做:

    Java后端工程师
  • Java程序员们最常犯的10个错误

    Arrays.asList()会返回一个ArrayList对象,ArrayList类是Arrays的一个私有静态类,而不是java.util.ArrayList...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券