Docker之Docker swarm集群管理之harbor镜像仓库

一、harbor镜像仓库

(一)什么是harbor镜像仓库

镜像仓库简单理解就是类github,在企业内部,不同部门之间使用harbor镜像仓库的使用权限是不同的,这时候就可以在harbor上进行设置。
事实上,Harbor 是在 Docker Registry 上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制,AD/LDAP集成以及审计日志等,足以满足基本需求。

(二)harbor镜像仓库的特性

1. 基于角色访问控制

每个人角色不同,需求也不同,因此就需要访问权限控制,根据角色分配相应的权限。例如,开发人员需要对项目构建这就需要用到读写权限(push/pull),测试人员只需要读权限(pull),运维一般管理镜像仓库,具备权限分配能力,项目经历具有所有权限。

在 Harbor 中,有三种角色
(1)Guest:对指定项目有只读权限。
(2)Developer:开发,读写项目的权限。
(3)Admin:管理者,所有权限。
Anonymous:当用户未登录时,该用户被设为匿名用户。匿名用户不能访问私有项目,只能访问公开项目。

2. 镜像复制
可以将仓库中的镜像同步到远程的 Harbor。

3. LDAP
Harbor 支持 LDAP 认证,可以很轻易接入已有的 LDAP。

4. 镜像删除和空间回收
Harbor 支持在 Web 删除镜像,回收无用的镜像,释放磁盘空间。

5. 图形页面管理
用户很方面搜索镜像及项目管理。

6. 审计
对仓库的所有操作都有记录。

7. RESET API
完整的API,方便与外部集成。

(三)如何配置harbor镜像仓库

1、harbor的安装

Docker之Docker swarm集群管理之harbor镜像仓库
这里使用的下载的路径是: https://github.com/goharbor/harbor/releases
(1)下载解压harbor软件:
Docker之Docker swarm集群管理之harbor镜像仓库
(2)安装的前提
安装harbor的前提是安装好docker:
Docker之Docker swarm集群管理之harbor镜像仓库
安装好docker-compose
(3)由于选用的是443端口,以加密的方式安装,所以我们需要先生成一个**:
生成的路径可以选择在/etc/docker下面:

Docker之Docker swarm集群管理之harbor镜像仓库
执行install.sh文件
Docker之Docker swarm集群管理之harbor镜像仓库
执行完.sh文件之后,我们就可以在系统中查看安装过程中拉取得镜像了:
Docker之Docker swarm集群管理之harbor镜像仓库

2、配置文件的更改

我们在安装的过程中,不能将我们的端口暴露给外部,以防止被攻击;
Docker之Docker swarm集群管理之harbor镜像仓库
Docker之Docker swarm集群管理之harbor镜像仓库

(四)、如何使用harbor

(Ⅰ)镜像的上传

1、页面登录
(1)、使用域名登录,如果要使用域名登录,必须写入域名解析
(2)、使用ip地址登录,只要能通即可
登录账号是admin
登录密码是wesos
Docker之Docker swarm集群管理之harbor镜像仓库
登录进去之后就是页面所显示的内容。
(2)终端中登录并上传镜像
在终端中要登陆的话,需要将.crt文件拷贝为ca.crt文件,因为在认证的过程中会自加载这个文件认证

cp /etc/docker/reg.westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt
Docker之Docker swarm集群管理之harbor镜像仓库

Docker之Docker swarm集群管理之harbor镜像仓库
2、镜像上传的步骤
(1)登录
docker login reg.westos.org
第一次登录的时候需要输入账号和密码
账号是:admin
密码是:westos
Docker之Docker swarm集群管理之harbor镜像仓库
(1)给镜像打标签
docker tag nginx:latest reg.westos.org/library/nginx
Docker之Docker swarm集群管理之harbor镜像仓库
其中reg.westos.org/library是上传的路径;nginx是名称
(2)push上传docker push reg.westos.org/library/nginx
Docker之Docker swarm集群管理之harbor镜像仓库
Docker之Docker swarm集群管理之harbor镜像仓库

(Ⅱ)账户的设置

匿名用户可以对公共仓库的镜像进行拉取
我们创建一个用户之后,将用户可以添加为四类,每一类都有自己的权限:
Docker之Docker swarm集群管理之harbor镜像仓库
此时我们可以尝试上传镜像到westos用户中:
首先添加用户
再将用户添加到某一个项目中,并选择对应的权限;
Docker之Docker swarm集群管理之harbor镜像仓库
最后再在页面上上传镜像:
同样上传镜像之前,先给镜像打标签;
如果不想每一次在上传镜像的时候输入密码,那么我们可以选择的登录账户,登录账户认证信息就是在
/root/.docker/config.json文件中。Docker之Docker swarm集群管理之harbor镜像仓库

二、问题解决

(一)、解决docker info出现warrning的问题

查看warrning后面的内容:
sysctl -a | grep bridge-nf-call-ip6tables 如果值为0,则需要将其写入配置文件中,并将值改为1;
cd /etc/sysctl.d/
vim docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

(二)、安装harbor过程出现的问题

1、出现listen tcp 0.0.0.0:80: bind: address already in use,分析是进程占用了80端口,分子分析发现是之前的dokcer swarm集群中部署的game2048游戏占用了80端口,停止此服务之后可正常执行脚本。Docker之Docker swarm集群管理之harbor镜像仓库
2、证书以及**的路径
如果要使用不同的账户登录的时候,就需要重新登录。我们可以选择先docker logout 用户名退出之后在重新登录即可。
Docker之Docker swarm集群管理之harbor镜像仓库