Harbor仓库
- 一、Harbor简介
- 二、安装部署Harbor仓库
- 三、Harbor仓库的使用
- 四、harbor安全验证
一、Harbor简介
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
Harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。
Harbor作为一个企业级私有Registry服务器,提供了更好的性能和安全,提升用户使用Registry构建和运行环境传输镜像的效率。
Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。
二、安装部署Harbor仓库
先将之前的registry容器删除
docker rm -f registry
1. 安装docker-compose
下载得到docker-compose文件,将docker-compose二进制文件放入/usr/local/bin目录下并赋予权限
docker-compose-Linux-x86_64-1.27.0
mv /root/docker-compose-Linux-x86_64-1.27.0 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose #给其执行权限
2. 解压Harbor安装包并配置
tar zxf harbor-offline-installer-v1.10.1.tgz
3. 编辑harbor配置文件
vim harbor.yml
拷贝证书目录到配置文件写的指定路径/data目录下
4. 安装harbor
执行harbor目录下install.sh安装脚本
查看harbor目录,存在docker-compose.yml,此时可以启动docker-compose(必须在harbor目录下执行)
5. 测试harbor仓库
真实主机设置域名解析reg.westos.org,然后用真机浏览器进行访问(浏览器也可以直接输入server1的IP进行访问仓库)
出现此图是因为仓库证书是自签证书浏览器不信任,直接选择继续访问
登陆界面输入harbor.yml中填入的用户及密码即可登陆
这里library是harbor的默认仓库
此时server1可以登陆reg.westos.org通过用户认证后上传镜像,通过浏览器图像界面查看镜像更加直观
配置server2的docker仓库源和域名解析
cd /etc/docker
vim deamon.json #写入仓库源
systemctl reload docker #重新加载docker配置
docker info #查看docker信息
server2从harbor仓库拉取镜像
这里可以看到server2本来没有nginx镜像,但是当server2直接运行nginx容器时会自动从harbor的默认仓库拉取镜像
在web页面可以看到我们前面操作的日志记录
三、Harbor仓库的使用
创建私有仓库
新建项目将会新建一个仓库,不选择公开项则默认为私有仓库
还可以创建用户并为用户设定密码,然后将创建的用户添加到仓库成员中并设置角色
四、harbor安全验证
-
–with-notary: 镜像信任,Notary是Docker镜像的签名工具,用来保证镜像在pull,push和传输过程中的一致性和完整性,避免中间人攻击,避免非法的镜像更新和运行。
镜像信任功能能够保证镜像的安全,只有打了信任标签的镜像才能被拉取
- –with-clair: 镜像安全扫描,Harbor与Clair集成,添加漏洞扫描功能。 默认在运行harbor时漏洞扫描是没有开启的,需要重新开启并添加参数
- –with-chartmuseum: 支持chart仓库服务
添加harbor安全验证需要重新安装harbor仓库
镜像安全扫描
添加harbor安全验证后我们可以对仓库的镜像进行安全扫描
可以在仓库配置管理中设置自动对镜像进行安全扫描
内容信任
启用内容信任功能
此时如果上传镜像会失败,因为我们没有部署根证书
部署根证书:
mkdir ~/.docker/tls/reg.westos.org:4443 -p
cd ~/.docker/tls/reg.westos.org:4443
cp /etc/docker/certs.d/reg.westos.org/ca.crt .
再次进行镜像上传,可以看到签名成功并上传
上传成功的镜像在浏览器中查看可以看到显示已签名
现在用server2拉取私有仓库中未签名的镜像将会被拒绝
当我们上传仓库已经存在的镜像时会显示exsit,所以需要修改镜像标签,我们只用输入repository key
密码为 westos12345 这些内容都在harbor.yml配置文件中
关闭内容信任功能
export DOCKER_CONTENT_TRUST=0