搭建并使用Harbor容器镜像仓库
Harbor是VMWare开源的企业级容器镜像仓库。它扩展了Docker Registry的功能,包括安全性、认证和管理等功能。Harbor支持设置多个仓库并在仓库间复制镜像。另外,Harbor提供了高级的安全属性,包括用户管理、访问控制、行为审计、镜像漏洞扫描等。
官方给出的特点如下:
- 基于角色的访问控制(RBAC)
- 基于策略的镜像复制
- 镜像漏洞扫描
- LDAP/AD集成支持
- 镜像删除和垃圾回收
- Notary镜像真实性确认
- 图形用户接口
- 审计
- 易于部署
下面给出在Linux中进行在线安装的方法。
前期准备
官方给出了安装Harbor主机的软硬件需求。其中硬件需求基本都能满足,软件需求包括:Python 2.7或更高版本;Docker engine 1.10或更高版本,可根据官方教程安装Docker CE:https://docs.docker.com/engine/installation/;Docker Compose 1.6.0或更高版本,安装教程见:https://docs.docker.com/compose/install/;Openss最新版。同时需要443、4443和80端口开放。
安装过程
Harbor安装过程主要为三步:
- 下载安装包;
- 修改配置文件
harbor.cfg; - 运行
install.sh并启动Harbor。
下载安装包
在Harbor官方项目的release页面下载安装包。本文下载的在线安装包harbor-online-installer-<version>.tgz。然后对其解压:
$ tar xvf harbor-online-installer-<version>.tgz
修改配置
在修改配置前首先需要获取证书,为网络传输增加TSL加密。这样不仅可以提高镜像库数据传输的安全性,同时在Harbor中启用Notary进行镜像真实性确认,要求启用https。
使用者可在CA购买授权的证书,也可使用Let's Encrypt提供的免费证书。
采用文章Docker环境中使用Let's Encrypt为Nginx提供免费SSL证书中的方法生成证书。假设证书存放位置为:/data/certbot/letsencrypt。
配置文件为解压后文件夹中的harbor.cfg文件。配置参数很多,详细说明见官方文档。本文仅做必要的配置如下:
- hostname: your.domain.com
- ui_url_protocol: https
- ssl_cert: /data/certbot/letsencrypt/live/your.domain.com/fullchain.pem
- ssl_cert_key: /data/certbot/letsencrypt/live/your.domain.com/privkey.pem
安装和使用Harbor
安装Harbor
使用如下命令安装Harbor,并启用Notary(镜像真实性确认)和Clair(镜像漏洞扫描)。更多关于Notary的信息参考https://docs.docker.com/engine/security/trust/content_trust/,关于Clair的信息参考https://coreos.com/clair/docs/2.0.1/。
$ sudo ./install.sh --with-notary --with-clair
注意:如果运行可能出现错误提示,要求安装Docker Compose,而实际已经安装。这是因为docker-compose文件只放在了/usr/local/bin/文件夹下,不在root用户的环境变量中,因此可将docker-compose复制到/usr/sbin/文件夹中:
sudo cp /usr/local/bin/docker-compose /usr/sbin/docker-compose
使用Harbor
安装完成后即可通过浏览器访问Harbor了,在浏览器中输入your.domain.com,使用初始用户名密码admin/Harbor12345登录Harbor。
在系统管理/用户管理中创建用户;在项目窗口中新建项目test,访问级别设置为私有,并在项目中新建成员。
在需要使用Harbor的机器中,使用docker login登录仓库,用户名密码为刚创建用户的用户名和密码,并向项目test中推送镜像:
$ docker login your.domain.com
$ docker push your.domain.com/test/image:tag
Harbor运行管理
可以使用docker-compose命令停止或启动Harbor,下面给出相关的命令。(需要在harbor解压缩的文件夹中运行)
停止Harbor:
$ sudo docker-compose stop
Stopping nginx ... done
Stopping harbor-jobservice ... done
Stopping harbor-ui ... done
Stopping harbor-db ... done
Stopping registry ... done
Stopping harbor-log ... done
重新启动Harbor:
$ sudo docker-compose start
Starting log ... done
Starting ui ... done
Starting mysql ... done
Starting jobservice ... done
Starting registry ... done
Starting proxy ... done
如修改配置文件,需要在重新启动前执行prepare脚本文件更新Harbor需要的配置信息:
$ sudo docker-compose down -v
$ vim harbor.cfg
$ sudo prepare
$ sudo docker-compose up -d
删除Harbor容器,同时保留镜像和数据:
$ sudo docker-compose down -v
删除镜像和数据:
$ rm -r /data/database
$ rm -r /data/registry
在安装了Clair和Notary时,Harbor的启动和停止需要指定额外的文件:
$ sudo docker-compose -f ./docker-compose.yml \
-f ./docker-compose.clair.yml \
-f ./docker-compose.notary.yml [ up|down|ps|stop|start ]