• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Docker:使用Portus构建私有仓库

Docker 彭东稳 7年前 (2017-11-15) 30181次浏览 已收录 0个评论

一、Portus介绍

Docker官方并没有提供Docker registry的用户界面,对权限的控制粒度也比较粗。SUSE的Portus很好地解决了这个问题,Portus是用于Docker RegistryAPI(v2)的开源前端和授权工具,最低要求register版本是2.1。它可以作为授权服务器和用户界面,用于新一代的Docker Registry。

  • 安全

Portus 实现了最新的 Docker Registry中定义的新的授权方案。它允许对你所有的镜像进行细颗粒度控制,你可以决定哪个用户和团队可push/pull镜像。

  • 轻松管理用户

在Portus映射你的公司,可以定义任意数量的team,并从team添加和移除用户。Team有三种类型的用户:Viewers ,只能pull镜像;Contributors,可以push/pull镜像;Owners,类似contributors,但可以从team添加或移除用户。

  • 搜索

Portus提供你的register的内容的预览,同时有一个快速搜索镜像的功能。

  • Audit

所有相关事件都会被Portus自动记录,可被管理员用户分析。

二、安装Portus

2.1 安装Docker-Compose

注意这个地方要加一个参数-U,因为会安装这个包backports.ssl-match-hostname,要求版本是大于或等于3.5的,不加-U默认安装的是3.4的,后面安装会报错。如果你没有此问题可忽略。

到这里docker-compse就完成了。

2.2 安装Portus

先到GIT下载包

然后可以选择把Ruby的源改为淘宝的Ruby源,就是为了快。把Portus/Gemfile文件中的第一行源换成“https://ruby.taobao.org”即可。

然后就可以进行构建安装了,但请在安装前先到compose目录看一下docker-compose.yml.template文件,这里面包含web端口和挂载volumes等参数,可以自行进行定义,我这里就默认了。

由于Portus在安装过程中,需要下载几个依赖的镜像包,例如:Portus安装依赖MariaDB,portus_web.tar、rails4.2.2tar,Registry2.1.1.tar安装过程中下载比较慢(网络不好会更慢)。

安装成功后,会启动如下容器:

修改Docker配置文件

此时,我们还需要修改/lib/systemd/system/docker.service把–insecure-registry 192.168.0.70:5000这句加到ExecStart=/usr/bin/docker这个配置项后。

重启Docker

重启portus容器。

三、Portus配置与验证

3.1 登录配置程序

Portus的登录界面需要创建用户名和密码,然后进行Registry的设置,如下图:

Docker:使用Portus构建私有仓库

注册完毕后会跳转到登记registry页面:下一步就是创建一个Registry,给定一个名字和Registry地址。

Docker:使用Portus构建私有仓库

3.2 管理

Portus现在只能管理一个私有库。它有一个团队的概念,每个一团队可以有多个命名空间,每个命名空间就是多个镜像的集合。每个团队有三种角色:

查看者(Viewer):只能pull镜像。

贡献者(Contributor):除了pull,还可以push镜像。

所有者(Owner):除了推拉镜像,还可以对团队成员进行管理。

由于角色是定义在团队里的,所以命名空间就不需要再考虑权限问题了,它只是镜像的集合而已。命名空间也有三种类型:

全局(Global):只有管理员可以push,其他人只能pull。

团队(Team):由团队定义。

个人(Personal):只有所有者和管理员可以推拉。

命名空间可以设置成public,这样不需要login也能pull。

说完一些基本概念,让我们来尝试一下。首先,portus需要配置一个用户,将会用到portus容器启动参数里的PORTUS_PASSWORD 。这个用户是用来调用docker registry的API,与其进行同步的。同步有两种方式:一是在docker registry的配置文件里写的notifications,这样每当有人push一个新镜像上去,docker registry将会通知portus修改数据库。可是时间长了,有可能数据库偶尔挂掉啥的导致两边数据不一致。Portus针对这种情况也提供了一个crono的job,定时运行即可。命令为RAILS_ENV=production CATALOG_CRON=”10.minutes” bundle exec crono 。现在让我们先来创建这个用户:

首先创建一个新用户。点击左边的Admin ,再点击中间的Users ,然后点击右边的Create new user ,填写用户信息即可。

不想写了,具体怎么使用具体看官网文档吧,需要创建https才可以提供服务。

官网:http://port.us.org


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (1)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!