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的安装

在这里插入图片描述
这里使用的下载的路径是: https://github.com/goharbor/harbor/releases
(1)下载解压harbor软件:
在这里插入图片描述
(2)安装的前提
安装harbor的前提是安装好docker:
在这里插入图片描述
安装好docker-compose
(3)由于选用的是443端口,以加密的方式安装,所以我们需要先生成一个密钥:
生成的路径可以选择在/etc/docker下面:

在这里插入图片描述
执行install.sh文件
在这里插入图片描述
执行完.sh文件之后,我们就可以在系统中查看安装过程中拉取得镜像了:
在这里插入图片描述

2、配置文件的更改

我们在安装的过程中,不能将我们的端口暴露给外部,以防止被攻击;
在这里插入图片描述
在这里插入图片描述

(四)、如何使用harbor

(Ⅰ)镜像的上传

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

cp /etc/docker/reg.westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt
在这里插入图片描述

在这里插入图片描述
2、镜像上传的步骤
(1)登录
docker login reg.westos.org
第一次登录的时候需要输入账号和密码
账号是:admin
密码是:westos
在这里插入图片描述
(1)给镜像打标签
docker tag nginx:latest reg.westos.org/library/nginx
在这里插入图片描述
其中reg.westos.org/library是上传的路径;nginx是名称
(2)push上传docker push reg.westos.org/library/nginx
在这里插入图片描述
在这里插入图片描述

(Ⅱ)账户的设置

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

二、问题解决

(一)、解决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端口,停止此服务之后可正常执行脚本。在这里插入图片描述
2、证书以及密钥的路径
如果要使用不同的账户登录的时候,就需要重新登录。我们可以选择先docker logout 用户名退出之后在重新登录即可。
在这里插入图片描述

发布了57 篇原创文章 · 获赞 0 · 访问量 1309

猜你喜欢

转载自blog.csdn.net/weixin_45674039/article/details/104351418