Docker仓库的使用与维护

案例——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主仓库,选择“仓库管理”→“新建目标”菜单命令,创建新目标

 

单击“测试连接”按钮,如果返回“测试连接成功”字样,即表示主库与从库连接成功

 

登录主库,选择“系统管理”→“复制管理”→“新建规则”菜单命令,创建复制规则,所示配置复制规则并保存。

 

登录主库查看镜像列表

 

登录主库查看镜像列表

 

登录从库查看镜像列表

 

posted @ 2021-06-30 19:32  哆啦丢了梦  阅读(317)  评论(0编辑  收藏  举报