一、harbor简介
1. 什么是harbor
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
基于角色的访问控制 - 用户与 Docker 镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
二、Harbor仓库的安装与部署
1.安装harbor和docker compose
lftp 172.25.254.250:/pub/docker> get harbor-offline-installer-v1.10.1.tgz
tar zxf harbor-offline-installer-v1.10.1.tgz
docker rm -f registry
docker logout reg.westos.org
cd harbor/
vim harbor.yml
///
hostname: reg.westos.org
certificate: /data/certs/westos.org.crt
private_key: /data/certs/westos.org.key
harbor_admin_password: westos
database:
password: westos
///
lftp 172.25.254.250:/pub/docker/compose> get docker-compose-Linux-x86_64-1.27.0
mv docker-compose-Linux-x86_64-1.27.0 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
cd harbor/
mkdir /data
cp ~/certs/ /data/ -r
cd
cd harbor/
./install.sh
docker ps
docker-compose ps
docker-compose start
浏览器:172.25.101.14/harbor
admin:westos
docker info #Registry: https://index.docker.io/v1/
cd /etc/docker
vim daemon.json
{
"registry-mirrors": ["https://reg.westos.org"]
}
systemctl reload docker.service
docker info #Registry Mirrors:https://reg.westos.org/
docker rmi reg.westos.org/nginx:latest
docker login reg.westos.org #登陆
docker tag nginx:latest reg.westos.org/library/nginx:latest
docker push reg.westos.org/library/nginx
浏览器—项目—library—library/nginx—latest
用户管理:创建用户:
项目:新建项目:westos(私有)
docker tag ubuntu:latest reg.westos.org/westos/ubuntu:latest
docker logout reg.westos.org
docker login reg.westos.org #可以用新建的用户登陆
docker push reg.westos.org/westos/ubuntu:latest #上传到私有仓库
查看日志可以看到最近做的操作:
2.制作镜像签名
–with-notary: 镜像信任,Notary是Docker镜像的签名工具,用来保证镜像在pull,push和传输过程中的一致性和完整性,避免中间人攻击,避免非法的镜像更新和运行。
镜像信任功能能够保证镜像的安全,只有打了信任标签的镜像才能被拉取
–with-clair: 镜像安全扫描,Harbor与Clair集成,添加漏洞扫描功能。 默认在运行harbor时漏洞扫描是没有开启的,需要重新开启并添加参数
–with-chartmuseum: 支持chart仓库服务
1.先关闭当前容器,重新安装harbor
cd harbor/
./install.sh --with-notary --with-clair --with-chartmuseum
2.对仓库的镜像进行安全扫描,未签名:
可以在仓库配置管理中设置自动对镜像进行安全扫描
3.部署根证书:
mkfir -p .docker/tls/reg.westos.org\:4443/
cd .docker/tls/reg.westos.org\:4443/
cp /etc/docker/certs.d/reg.westos.org/ca.crt .
4.启用docker内容信任:
export DOCKER_CONTENT_TRUST=1
export DOCKER_CONTENT_TRUST_SERVER=https://reg.westos.org:4443
上传镜像:
docker push reg.westos.org/library/nginx:latest
签名成功
此时用server5拉取私有仓库的镜像会被拒绝: