目录
- Harbor简介
- Harbor私有仓库的部署
- 登录harbor仓库上传和拉取镜像
- 从节点上拉取镜像 (将密钥传给各个节点)
- 创建个人用户仓库
- 私有仓库验证是否成功(节点是否会自动拉取镜像)
一、Harbor简介:
- Harbor是VMware公司开源了企业级Registry项目, 其的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,额外提供了如下功能:
- Cloud native registry:支持容器镜像和Helm Charts,为云原生环境提供服务
- Role based access control:基于角色的访问控制
- Policy based image replication:基于策略的镜像复制
- Vulnerability Scanning:镜像的漏洞扫描
- LDAP/AD support:AD/LDAP集成
- Image deletion & garbage collection:镜像的删除和空间清理
- Notary:可以保证镜像的真实性
- Graphical user portal:友好的管理UI
- Auditing:日志审计
- RESTful API:提供RESTfull接口易于与外部系统集成
- Easy deployment:部署简单
二、Harbor私有仓库的部署
(一)、实验步骤:
实验环境的部署:
主机名 | IP地址 | 系统 | 作用 |
reg.westos.org | 172.25.6.3 | rhel7.5 | 为集群(server1、server2、server3)提供docker软tar包的主机 |
server1 | 172.25.6.1 | rhel7.5 | swarm集群控制节点 |
server2 | 172.25.6.2 | rhel7.5 | swarm集群从节点 |
server4 | 172.25.6.4 | rhel7.5 | swarm集群从节点 |
实验步骤:
部署的软件:
- docker-ce-18.09.6-3.el7.x86_64.rpm
- docker-ce-cli-18.09.6-3.el7.x86_64.rpm
- containerd.io-1.2.5-3.1.el7.x86_64.rpm
- container-selinux-2.21-1.el7.noarch.rpm
- harbor软件包:
- harbor-offline-installer-v1.8.2.tgz
四台虚拟机上都要安装docker服务(前面已经装过了)
1、检查虚拟机网络是否畅通
ping baidu.com
2、将harbor软件 转给需要布置harbor仓库的主机、
3、解压harbor软件
tar zxf harbor-offline-installer-v1.8.2.tgz ##解压软件
4、进入harbor的主配置目录下
harbor.yml ##harbor主配置文件
install.sh ##安装命令
LICENSE
prepare
5、查看安装主机本身环境的基本信息
docker info ##查看docker的配置信息
(2)、查看集群节点:
docker node ls ##查看集群节点
(3)、清空环境:
(4)、查看docker-compos命令(docker-compose 用于harbor镜像的管理)
因为server1为服务的主节点所以将harbor'服务布置在server3上 (要确保环境的清洁不然进行其他实验
可能会出现资源争抢的情况)
(二)、在server3上安装和部署harbor软件
1、解压harbor软件
tar zxf harbor-offline-installer-v1.8.2.tgz
(2)、chmod +x docker-compose ##给于可写权限
(3)进入harbor主目录查看相关信息
(4)、查看harbor主配置文件
2、生成密钥和证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.westos.org.key -x509 -days 365 -out reg.westos.org.crt
3、将主机名修改成与证书上的写入的访问域名一样否则系统位法辨认
hostnamectl set-hostname reg.westos.org
4、添加本地解析
6、修改主配置目录:
cd harbor ##进去harbor主目录中
vim harbor.yml ##编辑harbor主配置文件
修改的地方如下:
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: reg.westos.org ##主机名
# http related config
#http: ##通过https方式访问harbor
# port for http, default is 80. If https enabled, this port will redirect to https port
# port: 80
# https related config
https: ##通过加密认证的方式访问harbor
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /etc/docker/reg.westos.org.crt ##证书存放的位置
private_key: /etc/docker/reg.westos.org.key ##密钥存放的位置
# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
# external_url: https://reg.mydomain.com:8433
# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: westos ##登录harbor仓库的密码
# Harbor DB configuration
database:
# The password for the root user of Harbor DB. Change this before any production use.
password: westos ##数据库的密码
# The default data volume
data_volume: /data ##数据卷存放的位置
# Harbor Storage settings by default is using /data dir on local filesystem
# Uncomment storage_service setting If you want to using external storage
(注:在进行harbor访问时有两种访问方式:第一种时通过http 80端口访问无需密码 第二中通过加密认证的方式访问需要生成密钥和证书 )
编译harbor软件
cd harbor
./install.sh ##编译命令
7、看到此页面说明编译成功
8、编译成功会在harbor目录下生成
common ##目录
docker-compose.yml ##文件
9、查看安装harbor之后自动生成的容器
10、查看docker-compose.yml文件信息
11、查看生成的 镜像
12、查看harbor软件部署对应的各个关联容器对应的状态
(所有容器的状态都为up时访问harbor才成功)
docker-compose ps ##查看管理的容器的健康状态
docker-compose down ##关闭容器
docker-compose up ##开启容器
13、在真机上要添加域名解析因为访问harbor时要通过域名的方式访问 ,在真机上打开的浏览器
不加解析就无法识别需要访问的内容
查看真机是否可以和reg.westos.org的域名 可以ping通
14、在浏览器上输入https://reg.westos.org
15、输入登录名和密码
16、查看镜像仓库的基本信息:
三、登录harbor仓库上传和拉取镜像
(一)、在reg.westos.org 主机上上传镜像时需要登录验证否则无法上传
验证:没有登录认证就上传镜像
docker tag ubuntu:latest reg.westos.org/library/nginx ## 指定镜像上传的位置
docker push reg.westos.org/library/nginx ##上传镜像
上传失败!!错误提示:缺少认证信息
(二)登录认证
登录认证的步骤:
1、创建证书路径
[root@reg ~]# cd /etc/docker/
[root@reg docker]# mkdir -p certs.d ##创建网页认证存放的位置
[root@reg docker]# cd certs.d/
[root@reg certs.d]# mkdir reg.westos.org/
[root@reg certs.d]# cd reg.westos.org/
[root@reg reg.westos.org]# cp /etc/docker/reg.westos.org.crt ca.crt ##将证书复制存放到登录信息所读取的路径/etc/docker/certs.d/reg.westos.org/目录下 且证书的名字必须为ca.crt(不然系统无法识别)
2、登录认证上传镜像
[root@reg ]# docker login reg.westos.org ##登录认证
docker tag ubuntu:latest reg.westos.org/library/nginx ## 指定镜像上传的位置
docker push reg.westos.org/library/nginx ##上传镜像
3、在网页上查看镜像是否成功上传到harbor仓库中
四、设置在从节点上也可以拉取镜像
将认证文件信息转给各个节点 (提前创建号认证所读取文件的路径)
1、创建存放证书的路径
server1上:
[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# mkdir -p certs.d ##创建网页认证存放的位置
[root@server1 docker]# cd certs.d/
[root@server1 certs.d]# mkdir reg.westos.org/
2、在server4上:
(和server1上的操作步骤相同)
在server2上:
(同上)
在server1上进行从节点进行镜像的上传和拉取实验 :
在server1上进行域名解析
3、查看域名解析是否可以ping通
5、从harbor私有仓库拉取镜像
docker pull reg.westos.org/libary/nginx
4、在网页上查看私有仓库的日志
(可以看到私有仓库中的镜像被拉取或者上传的记录)
五、创建个人用户仓库
在harbor页面点击用户管理 :
2、点击创建用户
3、将创建好的用户添加到项目中
4、查看添加好的私人用户
5、将私人用户的身份改成维护人员:
6、验证节点上传镜像
(1)、没有进行认证就上传镜像
创建号的harbor私有仓库从节点只能拉取镜像而不能上传镜像 如果要实现上传的功能必须要使用创建好的个人用户身份进行登录验证才能上传
在server1上:
验证:没有认证就上传镜像
docker tag ubuntu:latest reg.westos.org/library/haproxy ## 指定镜像上传的位置
docker push reg.westos.org/library/haproxy ##上传镜像
报错:
denied: requested access to resource is denied ##系统权限问题无法上传
(2)、以私人用户的身份进行进行认证登录
docker login reg.westos.org
登录成功后系统将会把登录信息写入文件.docker目录下的config.json文件中
[root@server1 ~]# cd .docker/
[root@server1 .docker]# cat config.json ##查看登录信息文件
如果要删除之前登录的信息 输入以下命令:
docker logout config.json ##删除之前的登录信息
3、再次进行镜像上传:
(上传成功)
在server4中拉取上传到私有用户的镜像
docker pull reg.westos.org/library/haproxy ##拉取镜像
(拉取镜像失败因为没有登录认证)
六、私有仓库验证是否成功(加点是否会自动拉取镜像)
1、创建容器副本时,各个节点上的将会自动拉从harbor私有仓库上自动拉取镜像
server1上删除之前的实验镜像信息
2、在server4上也进行相关的操作
3、在server2上:
4、创建3个名字为my_web以nginx为镜像的副本
[root@server1 ~]#docker service create --help ##查看docker servicer 的相关
[root@server1 ~]#docker service create --name my_web --replicas 3 --publish 80:80 nginx ##建立3个副本的命名为my_web,端口影射为80 使用的镜像为nginx
5、查看各个节点的镜像是否自动拉取
docker images ##查看docker的镜像命令
在server1上:
(拉取成功)
在server4上:
(拉取成功)
6、在harbor应用上查看拉取镜像的日志:
(可以看到nginx镜像被拉取3次)
Harbor私有仓库的创建总结:
Harbor私有仓库的创建不仅有利于在实际的生产环境中更快更安全的部署 实验的环境,且大大提高了企业的工作效率,
节省了部署的时间。