docker 镜像仓库 Harbor 部署 跨数据复制
Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目
它主要 提供 Dcoker Registry 管理UI,可基于角色访问控制, AD/LDAP 集成,日志审核等功能,完全的支持中文。
Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。
注: 由于 Harbor 是基于 Docker Registry V2 版本,所以 docker 版本必须 > = 1.10.0 docker-compose >= 1.6.0
开源项目地址:https://github.com/vmware/harbor
一、harbor管理界面的部署安装
1、进入到GitHub下载官方harbor文件,下载链接地址为:https://github.com/vmware/harbor/releases,我下载了1.11版本使用
2、harbor需要安装docker和docker-compose才能使用,安装docker步骤省略,docker-dompose安装步骤如下:
#yum install python-pip
#pip install docker-compose
3、解压缩下载好的harbor文件,cd harbor,修改docker-compose.yml和harbor.cfg两个文件,其中
docker-compose.yml主要修改registry容器参数,在network下增加如下图中框内的内容:
4、harbor.cfg只需要修改hostname为你自己的机器IP或者域名,harbor默认的db连接密码为root123,可以自己修改,也可以保持默认,harbor初始管理员密码为Harbor12345,可以根据自己需要进行修改,email选项是用来忘记密码重置用的,根据实际情况修改,如果使用163或者qq邮箱等,需要使用授权码进行登录,此时就不能使用密码登录了,会无效的(qq使用授权码登录第三方邮箱客户端自行百度);
都修改完成之后,使用官方自带脚本更新参数,在harbor目录中执行./prepare,
5、接着在harbor目录下执行./install.sh命令即可,会自动导入镜像并启动对应的容器,待脚本跑完之后使用docke-compose ps即可查看,常用命令包含以下几个:
docker-compose up -d ###后台启动,如果容器不存在根据镜像自动创建
docker-compose down -v ###停止容器并删除容器
docker-compose start ###启动容器,容器不存在就无法启动,不会自动创建镜像
docker-compose stop ###停止容器
注:其实上面是停止docker-compose.yml中定义的所有容器,默认情况下docker-compose就是操作同目录下的docker-compose.yml文件,如果使用其他yml文件,可以使用-f自己指定。
最后使用链接http://192.168.233.14(这是我自己的地址,你需要换成你自己的),输入用户名密码即可登录系统了。
二、使用私有仓库push和pull镜像(上传,拉取镜像)
1、docker默认是从官方拉取镜像的,并且从1.12版本之后,默认私有仓库是使用https来进行连接,所以我们这里需要进行一些相应的修改:
修改docker启动文件,在启动命令后加入参数:--insecure-registry 192.168.233.14:5000
然后使用systemctl daemon-reload一下,重启docker
2、使用docker命令对镜像打标签并且上传至私有仓库
docker打标签命令:docker tag centos:latest 192.168.233.14:5000/devil/centos:late
上面的命令的意思是将centos这个镜像的最新版latest打上标签,其中192.168.233.14:5000是仓库的地址,devil是仓库里创建的项目(可以网上看登录的界面截图,我创建了一个devil项目,项目分为公开和私有,公开项目不需要登录就可以进行拉取,私有的是需要登录以后才能拉取的,上传镜像都需要登录并且要有上传的权限才行),centos:latest是我自己取的名字和版本,可以跟原来的保持一致,也可以自己另外取名,比如centos:mytest,打完标签之后登录仓库并上传镜像:
进入web管理界面即可查看到我们最新上传的镜像了
3、拉取镜像很简单,因为我设置的是公开项目,直接docker pull 192.168.233.14:5000/devil/centos:latest即可
######################################更新镜像仓库复制#############################################
一个仓库的情况下如果镜像仓库挂了,那么所有的镜像也就没有了,所以最好是创建一个备份仓库,harbor提供了镜像仓库复制功能,可以很好的自动实现;创建2个harbor仓库,其中一个为主,另外一个为辅,登陆主仓库http:/IP,点击任意想要复制的仓库项目,然后复制,点击新疆规则,
名称、描述根据自己的实际随便填写,勾选启用,目标名为复制到辅仓库的目标名,需要存在,如果不存在可以勾选创建目标,url为辅仓库的harbor-ui的url,账户密码也是辅仓库账户密码,点击测试,测试成功代表没有问题了,然后就会自动复制了,从日志处可以看到复制的过程。
#https的启用
要启用https,那么ca证书必不可少,一般内网环境都是直接使用自建ca
#使用openssl自建ca,openssl的配置文件默认为/etc/pki/tls/openssl.cnf
#进入到CA目录下执行
#(umask 077; openssl genrsa -out private/cakey.pem 2048)
---括号中执行,代表使用子shell执行,不影响本机的umask值。
作为根 CA,可以生成一个自签名的证书,来标明自己的身份,签名方法如下
#openssl req -new -x509 -key private/cakey.pem -days 3655 -out cacert.pem
----会提示输入相关信息,不要随便乱写,其中Common Name一般填写为域名或者ip地址。
###开始生成服务证书
#openssl genrsa -out harbor.key 2048
###生成签名请求
#openssl req -new -key harbor.key -out harbor.csr
###使用ca证书签署请求
#openssl ca -in harbor.csr -out harbor.crt -days 3650
----提示信息选择yes就可以了