案例——Docker仓库的使用与维护
一、案例目标
(1)了解主流的Docker仓库。
(2)掌握Harbor私有仓库的搭建与使用。
(3)掌握Harbor私有仓库的主从同步。
二、案例分析
Harbor是VMware公司开源的一个企业级Docker Registry项目,Harbor作为一个企业级私有Registry服务器,提供了更好的性能和安全,提升了用户使用Registry构建和运行环境传输镜像的效率。虽然Harbor和Registry都是私有镜像仓库的选择,但是Harbor的企业级特性更强,因此也是更多企业级用户的选择。
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。有了Docker自带的Registry为什么还要用Harbor?主要有以下几点原因。
① Harbor可以根据角色灵活地进行权限控制,如访客只需给pull权限即可。
② Harbor可以实现镜像同步。生产环境中对系统稳定性要求高,多个仓库可保证其高可用性。更常用的场景是,在企业级软件环境中,会在软件开发的不同阶段存在不同的镜像仓库。
③ Harbor可利用图形界面进行镜像的管理。
④ Harbor提供分层传输机制,优化网络传输。Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
1.规划节点
主机名 |
节点 |
master |
Harbor仓库节点 |
slave |
Harbor备份节点 |
client |
Docker客户端 |
2.基础准备
所有节点已安装好docker-ce,并执行脚本image.sh。有外网的情况下可配置加速器,无外网则跳过此步骤。。
三、案例实施
1. 配置镜像加速器
(1)配置加速器
在国内访问Docker官方的镜像,一直以来速度都比较慢。为了快速访问Docker官方镜像都会配置三方加速器,目前常用三方加速器有网易、USTC、DaoCloud、阿里云等。
如7.3节一样,修改守护进程/etc/docker/daemon.json文件并添加上registry-mirrors键值,默认通过此修改下载镜像。
在daemon.json配置文件中添加加速器地址,可以添加多个,每个地址用逗号隔开。
[root@master ~]# vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"]
}
(2)重启Docker
重启Docker进程加速器即可生效。
2. 部署Harbor
Harbor主要由下面几个组件组成。
l proxy:Nginx前端代理,主要是分发前端页面UI访问和镜像上传和下载流量。
l registry:镜像仓库,负责存储镜像文件。
l 核心服务:提供Web UI、数据库、Token认证、webhook等功能。
l 日志服务:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
l database:用来存储核心服务的一些数据。
这几个容器通过Docker link的形式连接在一起,这样,在容器之间可以通过容器名字互相访问。对终端用户而言,只需要暴露proxy(即Nginx)的服务端口。
(1)生成CA证书
Openssl是目前最流行的SSL密码库工具,提供了一个通用,功能完备的工具套件,用以支持SSL/TLS协议的实现。
[root@master ~]# mkdir -p /data/ssl
[root@master ~]# cd /data/ssl/
[root@master ssl]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 2.235 -out ca.crt
生成证书签名请求。
[root@master ssl]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.yidaoyun.com.key -out www.yidaoyun.com.csr
生成注册表主机的证书。
[root@master ssl]# openssl x509 -req -days 2.235 -in www.yidaoyun.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.yidaoyun.com.crt
[root@master ssl]# ls /data/ssl/
ca.crt ca.key ca.srl www.yidaoyun.com.crt www.yidaoyun.com.csr www.yidaoyun.com.key
(2)分发证书
[root@master ssl]# cp -rvf ./www.yidaoyun.com.crt /etc/pki/ca-trust/source/anchors/
[root@master ssl]# update-ca-trust enable
[root@master ssl]# update-ca-trust extract
(3)安装docker-compose
下载docker-compose的最新版本:
[root@master ~]# curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
为docker-compose添加可执行权限:
验证查看docker-compose版本:
(4)下载Harbor安装包
Harbor支持在线和离线安装方式,此处使用离线方式安装,先下载Harbor安装包。
[root@master ~]# wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz
解压离线安装包。
[root@master ~]# tar -zxvf harbor-offline-installer-v1.5.3.tgz -C /opt/
[root@master ~]# cd /opt/
[root@master opt]# ls
containerd harbor
(5)配置Harbor
进入到harbor目录。
编辑配置文件。
[root@master harbor]# vi harbor.cfg
[root@master harbor]# ls
common docker-compose.notary.yml ha harbor.v1.5.3.tar.gz LICENSE open_source_license
docker-compose.clair.yml docker-compose.yml harbor.cfg install.sh NOTICE prepare
修改以下内容。
hostname = 10.24.2.8 #修改harbor的启动IP,这里需要依据系统IP设置
ui_url_protocol = https #启用加密传输协议https
ssl_cert = /data/ssl/www.yidaoyun.com.crt #证书的位置
ssl_cert_key = /data/ssl/www.yidaoyun.com.key #证书密钥位置
harbor_admin_password = 000000 #修改harbor的admin用户的密码
(6)安装Harbor
[root@master harbor]# ./prepare
[root@master harbor]# ./install.sh --with-notary --with-clair
(7)访问Harbor
在浏览器中,输入https://10.24.2.8即可访问Harbor
(8)登录Harbor
以admin用户,密码为000000登录系统,登录后的项目列表如图
选择“配置管理”菜单命令,项目创建选择“仅管理员”,取消勾选“允许自注册”,复选框,然后单击“保存”按钮
3. 镜像管理与安全
(1)配置Docker
配置本地deamon.json文件。
必须重启Docker才能生效。
(2)重新启动Harbor私有镜像仓库
让Harbor修改过的配置立刻生效。
清理所有Harbor容器进程。
后台启动所有Harbor容器进程。
(3)上传镜像
[root@master harbor]# docker pull centos
[root@master harbor]# docker tag centos:latest 192.168.50.19/library/centos:latest
登录验证Harbor仓库。
上传镜像到Harbor仓库并重新启用漏洞扫描。
[root@master harbor]# ./install.sh --with-notary --with-clair
(4)查看上传结果
登录浏览器,选择“项目”→“镜像仓库”菜单命令,查看镜像上传结果
选中镜像,单击“扫描”按钮即可对镜像进行漏洞扫描
(5)设置镜像仓库安全等级
选择“项目”→“配置管理”菜单命令,取消勾选“阻止潜在漏洞镜像”复选框,然后单击“保存”按钮
注意:如果勾选了“阻止潜在漏洞镜像”复选框,那么有严重漏洞的镜像将不再复制给从库。
4. Docker客户端
(1)为Docker客户端下发域名证书
在Harbor本地执行操作,将Harbor上自签发的域名证书www.yidaoyun.com.crt复制到Docker客户端对应目录下。
在Docker客户端上执行操作,让证书立刻生效。
下发证书后必须重启动client节点的Docker服务。
(2)配置仓库
(3)登录仓库
docker-client登陆Harbor仓库进行登陆验证。
(4)上传镜像
修改镜像的名字并上传Harbor私有仓库。
浏览器登陆Harbor进行查看镜像列表
选择“项目”→“镜像仓库”→“镜像”菜单命令,勾选镜像(latest标签),单击“扫描”按钮即可对镜像进行漏洞扫描
5. Harbor主从复制
Harbor私有仓库的主从复制,类似于MySQL,属于1对多的复制。
(1)安装Harbor
在slave节点安装一个Harbor私有仓库作为Harbor的从库,步骤参考之前master节点的安装步骤,配置环境时域名设置为www2.yidaoyun.com。在浏览器输入“https://从库IP”登录Harbor
(2)分发证书
Harbor-Master节点从Harbor-Slave节点上拷贝证书。
[root@master ~]# scp 10.24.2.9:/data/ssl/www2.yidaoyun.com.crt /etc/pki/ca-trust/source/anchors/
重启Harbor。
[root@master ~]# cd /opt/harbor/
[root@master harbor]# docker-compose down
[root@master harbor]# ./prepare
[root@master harbor]# ./install.sh --with-notary --with-clair
(3)构建Harbor主从同步
登录Harbor主仓库,选择“仓库管理”→“新建目标”菜单命令,创建新目标
单击“测试连接”按钮,如果返回“测试连接成功”字样,即表示主库与从库连接成功
登录主库,选择“系统管理”→“复制管理”→“新建规则”菜单命令,创建复制规则,所示配置复制规则并保存。
登录主库查看镜像列表
登录主库查看镜像列表
登录从库查看镜像列表
原文:https://www.cnblogs.com/mzj0609/p/14956104.html