Harbor 企业级私有镜像仓库实战-五

2019年1月2日12:00:42 发表评论 3,940 views
广告也精彩

Harbor 企业级私有镜像仓库实战-五
上一篇文章,介绍了Registry的部署与使用,2019年人又懒惰了,不详敲命令了,所以我们想部署个开源产品,正好VMware公司开源了企业级Registry项目Harbor,由VMware中国研发的团队负责开发。

一、Harbor简介

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

与企业级的Registry相比优点如下:

更安全
更快捷
用户管理
访问控制
活动审计

1.1 Harbor私有仓库的作用

  • 公司或个人项目代码不能公开,如何共享镜像或快速发布?直接共享 Dockerfile 用时 build 吗?
  • 在国内直接拉取官方镜像非常缓慢。如何才能快速取官方基础镜像呢?
  • 国内的网络环境下,项目在 CI/CD 过程中拉取镜像可能会花费比较多的时间,如何能加快拉取镜像的速度?

没错,搭建Harbor私有镜像仓库吧。 (其实官网推荐使用:Registry)

官方中文文档:https://vmware.github.io/harbor/cn

二、系统环境及配置要求

2.1 运行配置要求

Harbor 企业级私有镜像仓库实战-五
硬盘主要存储镜像,镜像量大可以考虑加大。

2.2 软件要求

软件 版本 说明
Pyhton 2.7 及以上 我用的是CenOS 7 默认安装 2.7 版本,未装的装上
Docker 1.10 及以上 Docker容器基础一
Docker Compose 1.6.0 以上 安装 docker-compose
Openssl 推荐用最高版本 生成证书,自备证书的忽略

三、安装部署Harbor

3.1 Harbor安装步骤

  • 下载安装程序;
  • 配置harbor.cfg文件;
  • 运行install.sh来安装并启动Harbor;此 shell 脚本会生成所需要的配置文件,调用 docker-compose 来进行镜像拉取及启动。
    Harbor 有两种方式进行安装。分为离线在线,如果网络环境不佳可以先择离线安装。

本次部署使用当前最新稳定版本 v1.6.3

3.2 环境介绍

[root@node01 ~]# cat /etc/redhat-release    #系统版本
CentOS Linux release 7.4.1708 (Core) 
[root@node01 ~]# uname -a   #内核版本
Linux node01 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Last login: Fri Dec 28 18:23:08 2018 from 192.168.56.1

3.3 下载安装器

百度云链接:https://pan.baidu.com/s/1c_P0LSGCQK0HC-z8SS8a4Q
提取码:3g7p (下面使用离线包进行部署)
更多:github下载地址

3.4 解压安装程序:

mkdir /home/tools
rz  #如果慢,可以使用winscp进行传输
tar -zxvf harbor-offline-installer-v1.6.3.tgz

Harbor 企业级私有镜像仓库实战-五.

3.5 修改配置文件:

cd harbor/
vim harbor.cfg  #高版本就是 harbor.yml 

修改以下部分:

hostname = hub.dgstack.cn # 用于访问用户界面和register服务。它应该是目标机器的IP地址或完全限定的域名(FQDN),例如192.168.1.10或reg.yourdomain.com。不要使用localhost或127.0.0.1为主机名。
ui_url_protocol = http #(http或https,默认为http)用于访问UI和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为https。
ssl_cert = #SSL证书的路径,仅当协议设置为https时才应用
ssl_cert_key = #SSL密钥的路径,仅当协议设置为https时才应用。
harbor_admin_password = 123456 # 修改管理面板的登录密码

修改 docker-compose.yml文件, 不关心安装位置、端口的可以忽略。默认 docker-compose.yml 日志放在 var/logs/ 下,端口开放 80, 443

harbor.cfg中有两类参数,所需参数和可选参数。

  • 所需参数:这些参数需要在配置文件harbor.cfg中设置,如果用户更新它们并运行install.sh脚本重新安装Harbour,参数将生效。
  • 可选参数:这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动Harbour后在Web UI上进行更新。如果他们进入harbor.cfg,他们只会在第一次启动Harbor时生效,随后对这些参数的更新,harbor.cfg将被忽略
    Harbor 企业级私有镜像仓库实战-五

3.6 准备配置文件

#部署前一定要安装docker-compose,详细部署见文章头部
./prepare
# 安装启动harbor
./install.sh

Harbor 企业级私有镜像仓库实战-五

3.7 查看以运行的docker容器

[root@node01 harbor]# docker ps

Harbor 企业级私有镜像仓库实战-五

3.8 Web测试

http://hub.dgstack.cn 如果您不想用80端口请往下看
登入账号:admin
登入密码:123456

Harbor 企业级私有镜像仓库实战-五

四 【特殊要求】Harbor 更改访问端口

4.1 修改docker-compose.yml文件

找到nginx镜像配置,将外网映射端口改成未被占用的端口

[root@hub harbor]# vim docker-compose.yml 
proxy:
    image: goharbor/nginx-photon:v1.6.2
    container_name: nginx
    restart: always
    volumes:
      - ./common/config/nginx:/etc/nginx:z
    networks:
      - harbor
    ports:
      - 88:80
      - 843:443
      - 8443:4443
    depends_on:
      - postgresql
      - registry
      - ui
      - log

4.2 更改harbor.cfg文件

将hostname添加上映射端口

[root@hub harbor]# vim harbor.cfg 
hostname = hub.wubolive.com:88

重启docker-compose

[root@hub harbor]# docker-compose down -v
[root@hub harbor]# ./install

五、Harbor原理

5.1 Docker login的流程

Harbor 企业级私有镜像仓库实战-五

5.2 Docker push流程

Harbor 企业级私有镜像仓库实战-五

六、Harbor日常操作 K8S为例(业务请配置https)

6.1 上传docker镜像

因docker默认不支持http方式上传镜像,所有需要在配置文件中指明使用http访问,或者参考文章底部连接,配置为HTTPS模式,根据您的实际情况而定。

[root@hub harbor]# vim /etc/docker/daemon.json
{
    "registry-mirrors": ["http://cc51a693.m.daocloud.io"],
    "insecure-registries": ["hub.dgstack.cn"]
}
systemctl daemon-reload  #重载
systemctl restart docker  #重启
docker-compose ps  #查看服务状态,如果退出了,需要启动
docker-compose up -d   #启动harbor

#或者批量启动docker容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)  

6.2 登入Harbor 在面板中创建一个用户K8S并加入library项目

echo "192.168.56.11  hub.dgstack.cn"
[root@hub harbor]# docker login hub.dgstack.cn
Username: k8s
Password: 
Login Succeeded
# 显示Login Succeeded说明登入成功

Harbor 企业级私有镜像仓库实战-五

6.3 推送镜像格式:

#docker tag 镜像中心域名/项目名称/镜像名:版本
docker tag SOURCE_IMAGE[:TAG] hub.dgstack.cn/library/IMAGE[:TAG]
# docker push 更改tag后的镜像名
docker push hub.dgstack.cn/library/IMAGE[:TAG]

Harbor 企业级私有镜像仓库实战-五
Harbor 企业级私有镜像仓库实战-五

6.4 拉取镜像格式:

docker pull hub.dgstack.cn/library/nginx:latest

如果您在docker 客户端上拉取镜像报错,可以参考如下方式,设置镜像

报错信息:

Harbor 企业级私有镜像仓库实战-五

Error response from daemon: Get https://10.0.17.142/v2/: dial tcp 10.0.17.142:443: connect: connection refused

解决方法:1 docker服务指定镜像仓库

1,查找docker.service 所在的位置

systemctl  status docker 或者find / -name docker.service -type f

2,配置文件添加 --insecure-registry=仓库地址

ExecStart=/usr/bin/dockerd --insecure-registry=10.0.17.142

Harbor 企业级私有镜像仓库实战-五

3,重新启动服务

systemctl daemon-reload

systemctl restart docker

4,检验是否生效
Harbor 企业级私有镜像仓库实战-五
5,拉取镜像

docker pull 10.0.17.142/base-images/nginx:v1

Harbor 企业级私有镜像仓库实战-五
Harbor 企业级私有镜像仓库实战-五

解决方法2,添加https自签证书,详细配置如下

附:以HTTPS方式部署Harbor

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

至此 Harbor 企业级私有镜像仓库实战 完结。

  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: