【项目实战11】Docker3 (部署harbor仓库)

一、背景介绍

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值