使用Harbor搭建docker私有仓库管理系统
一、环境与介绍
Docker容器的使用场景越来越广泛了,Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
Harbor的部署一般分为两种离线和在线,我们使用离线的方法部署一下:
部署环境:CentOS 7.5.1804、docker 1.13.1、docker-compose1.22.0、Harbo/1.6.1。
二、安装与配置
1、安装docker-compose
sudo yum install epel-release -y
sudo yum install python-pip -y
sudo pip install --upgrade pip
sudo pip install -U -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose
sudo docker-compose version
2、下载harbor
sudo wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz
sudo tar -zxvf harbor-offine-installer-v1.6.1.tgz -C /usr/local
3、生成证书
默认docker中都使用https安全的方式进行拉取和提交镜像的,最好在部署的时候一劳永逸直接部署https方式访问。默认证书的配置文件为/data/cert,需要手动创建该目录。
cd /data/cert/
创建 CA 根证书
sudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt -subj "/C=CN/L=sz/O=yourdomain/CN=harbor-registry"
生成一个证书签名, 设置访问域名为 reg.yourdomain.com
sudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.yourdomain.com.key -out server.csr -subj "/C=CN/L=sz/O=yourdomain/CN=reg.yourdomain.com"
生成主机的证书
sudo openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out reg.yourdomain.com.crt
4、Harbor配置文件更改
进入harbor目录修改harbor.cfg文件
cd /usr/local/harbor
hostname= reg.yourdomain.com
ui_url_protocol = https #修改协议为https,默认http;
ssl_cert = /data/cert/reg.yourdomain.com.crt
ssl_cert_key = /data/cert/reg.yourdomain.com.key
5、Harbor安装
执行install.sh脚本
./install --with-clair #--with-clair是漏铜扫描器
有四步:
最后提示安装成功并已经运行;
查看容器镜像
sudo docker images
登录Harbor
设置hosts文件
linux是/etc/hosts
windows是C:\Windows\System32\drivers\etc\hosts
添加192.168.108.20 reg.moko.xyz #ip填写主机IP
浏览器登录https://reg.moko.xyz
登录账号,账号密码在harbor.cfg中:
同时还可以注册账号成为注册用户同样可以pull与push镜像
6、push与pull
push步骤:
docker login host #登录私有仓库
注:在具有Docker守护进程的机器上,确保选项“-insecure-registry”不存在,并且您必须将生成证书步骤中生成的ca.crt复制到/etc/docker/certs.d/reg.yourdomain.com(或您的注册表主机IP),如果该目录不存在,请创建它;否则会报错:登录未知权限签名证书。如果您将nginx端口443映射到另一个端口,则应改为创建/etc/docker/certs.d/reg.yourdomain.com:port(或您的注册表主机IP:端口)目录。然后运行任何docker命令来验证设置,例如
docker login reg.yourdomain.com
如果您已将nginx 443端口映射到另一个端口,则需要添加要登录的端口,如下所示:
docker login reg.yourdomain.com:port
docker tag host1/project/soure_image_name:tag host2/project/new_image_name:tag #将镜像重命名
docker push host2/project/image:tag #上传镜像到私有仓库
注:注册用户需要管理员授权如下:
1、访客没有push权限,开放人员能push镜像,项目管理员拥有push以及删除镜像的权限
2、姓名为已注册用户,添加如果是未注册用户会报错
为Harbour设置HTTPS后,您可以通过以下步骤验证它:
打开浏览器并输入地址:https://reg.moko.xyz。它应该显示Harbor的用户界面。
注:注册用户往library公共项目push默认是
pull步骤:
docker pull host/image_name:[tag] #如果不带tag,则下载该仓库下所有image_name镜像