部署harbor仓库
- 一、背景介绍
- 二、安装过程
- 三、在harbor仓库上传和下载镜像
- (1)、上传镜像
- (2)、其他主机实现镜像下载
- 四、harbor仓库的管理
- (1)、创建私有仓库
- (2)、镜像扫描安全
- (3)、内容信任
一、背景介绍
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
Harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。
Harbor作为一个企业级私有Registry服务器,提供了更好的性能和安全,提升用户使用Registry构建和运行环境传输镜像的效率。
Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。
二、安装过程
注意,本节的内容与项目实战10搭建registry容器的内容会相互影响,应此本节是独立进行的
1、获取软件包,解压安装包
[root@server1 ~] ls
harbor-offline-installer-v1.10.1.tgz docker-compose-Linux-x86_64-1.27.0
docker-compose-Linux-x86_64-1.27.0
为二进制文件,需放到/usr/local/bin/下,并赋予执行权限
[root@server1 mnt] mv docker-compose-Linux-x86_64-1.27.0 /usr/local/bin/docker-compose
[root@server1 mnt] chmod +x /usr/local/bin/docker-compose 赋予执行权限
2、生成证书和密钥
[root@server1 certs] mkdir -p /data/certs 建立存放位置
[root@server1 certs] openssl req -newkey rsa:4096 -nodes -sha256 -keyout /data/certs/westos.org.key -x509 -days 365 -out /data/certs/westos.org.crt 生成证书和密钥
[root@localhost mnt] tar zxf harbor-offline-installer-v1.10.1.tgz 解压
[root@server1 mnt] cd harbor
[root@server1 harbor] ls
common.sh harbor.v1.10.1.tar.gz harbor.yml install.sh LICENSE prepare
[root@server1 harbor] vim harbor.yml 修改配置文件
3、执行编译
[root@localhost harbor] ./install.sh
时间较为漫长,注意等待
开启harbor的时和遇到问题,说nginx不能打开,因为nginx的端口时80,我们查询端口发现80端口被占用
使用命令
[root@server1 harbor]kill - 9 5474 关闭进程
[root@server1 harbor] systemctl restart docker 重启即可完成
4、开启harbor仓库
因为是自建证书,所有网址不认可但是不影响访问
即可开始管理我们的docker文件
默认的库为library
注意docker-compose不用时需要关闭,不然会一直扫描占用内存
[root@server1 harbor] docker-compose down
三、在harbor仓库上传和下载镜像
(1)、上传镜像
为这里使用的是虚拟机server1作为harbor的提供服务
1、设置本机的地址解析
2、本机登陆harbor仓库
本机直接在本地登陆时会发现错误,因为是证书是被不知名的ca签名的,因为是我们自建的证书,所以会有问题
所以我们将之前的证书进行如下更改
[root@server1 harbor] mkdir /etc/docker/certs.d/reg.westos.org -p 在docker文件里面建立认证地址目录
[root@server1 harbor] cp /data/certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ 将之前建立的证书拷贝到这
[root@server1 harbor] cd /etc/docker/certs.d/reg.westos.org/
[root@server1 reg.westos.org] ls
westos.org.crt
[root@server1 reg.westos.org] mv westos.org.crt ca.crt 修改名字为ca证书
登陆成功
3、tag标记并且上传
[root@server1 docker] docker tag busybox:latest reg.westos.org/library/mario:latest
[root@server1 docker]docker push reg.westos.org/library/mario:latest
可以在harbor库中查看到上传的文件
(2)、其他主机实现镜像下载
1、在server2,server3,server4建立搭建docker
yum install docker-ce -y
//
[docker]
name=docker-ce
baseurl=http://172.25.42.250/docker-ce
gpgcheck=0
///
yum install docker-ce -y
systemctl enable --now docker
2、server2,server3,server4设置地址解析
vim /etc/hosts
3、server2,server3,server4设置镜像拉取地址
vim /etc/docker/daemon.json
//
{
"registry-mirrors": ["https://reg.westos.org"]
}
//
4、server2,server3,server4从server1那获取证书
mkdir -p /etc/docker/certs.d/reg.westos.org
scp server1:/etc/docker/certs.d/reg.westos.org/ca.crt /etc/docker/certs.d/reg.westos.org/
systemctl reload docker.service
5、下载测试
在server2运行容器时可以自动从harbor仓库中拉取文件
在harbor仓库中可以看到上传和拉取的记录
四、harbor仓库的管理
(1)、创建私有仓库
1、创建私密库
2、创建用户
3、将用户加入到westos私有仓库的管理员
4、上传镜像到私有仓库
[root@server1 docker] docker tag game2048:latest reg.westos.org/westos/game2048:latest
[root@server1 docker] docker push reg.westos.org/westos/game2048:latest
可以在私有仓库查看到镜像文件
在server2登陆刚才私有仓库的管理的账户即可下载
[root@server2 docker] docker login -u ck -p ck123456CK 账户密码登陆
[root@server2 docker] docker pull reg.westos.org/westos/game2048:latest
(2)、镜像扫描安全
1、先关闭当前的仓库
[root@server1 ~] cd harbor/
[root@server1 harbor] docker-compose down
2、重新安装harbor–with-notary
: 镜像信任,Notary是Docker镜像的签名工具,用来保证镜像在pull,push和传输过程中的一致性和完整性,避免中间人攻击,避免非法的镜像更新和运行。
镜像信任功能能够保证镜像的安全,只有打了信任标签的镜像才能被拉取
–with-clair
: 镜像安全扫描,Harbor与Clair集成,添加漏洞扫描功能。 默认在运行harbor时漏洞扫描是没有开启的,需要重新开启并添加参数
–with-chartmuseum
: 支持chart仓库服务
[root@server1 harbor] ./install.sh --with-notary --with-clair --with-chartmuseum
3、进行扫描镜像文件
现在是没有扫描的
进行扫描
(3)、内容信任
1、在server1(harbor仓库所在主机)进行设置
[root@server1 ~] cd /root/harbor/
[root@server1 ~] export DOCKER_CONTENT_TRUST_=1 开启信任模式
[root@server1 ~] export DOCKER_CONTENT_TRUST_SERVER=https://reg.westos.org:4443 指定信任传输端口
[root@server1 harbor] netstat -antlp
2、上传测试
发现上传失败,因为我们需要根部署证书
3、建立证书
4、再次上传
需要多次输入密码,自己随便设定新密码就行
查看到刚刚签名的镜像文件,建立了信任的镜像文件
5、关闭信任模式
export DOCKER_CONTENT_TRUST=0