之前搭建了Shipyard,可以对镜像、容器、Node进行管理,但在添加registry时出错啦。
试错1:刚开始以为是自己registry搭建的方式不对,没有用ssl导致,改成ssl方式后,在Shipyard中添加仓库失败。
试错2:以为自己安装Shipyard的方式不对,按官网文档-加上了TLS_CERT_PATH,但是Shipyard中添加仓库失败。
试错3:在网上查到说Shipyard只支持registry v1 不支持registry v2,如要支持v2需自己重编译 Shipyard。
于是开始了坑人的重编译之旅,结果还是在容器中 运行docker被埋啦。
开始转方向,不用Shipyard管理registry啦。
转方向1:Nginx+ssl+registry v2,网上有很多这类的安装方式,只不过将registry命令形式 换成 页面展示形式,并不具有管理工具,于是抛弃了它。
转方向2:Portus,看介绍很强大
Portus 是用于 Docker RegistryAPI(v2)的开源前端和授权工具,最低要求注册表版本是 2.1。它可以作为授权服务器和用户界面,用于新一代的 Docker Registry。
安全。Portus 实现了最新的 Docker Registry中定义的新的授权方案。它允许对你所有的镜像进行细颗粒度控制,你可以决定哪个用户和团队可 push/pull 镜像。
轻松管理用户。 在 Portus 映射你的公司,可以定义任意数量的 team,并从 team 添加和移除用户。Team 有三种类型的用户:Viewers ,只能 pull 镜像;Contributors,可以 push / pull 镜像;Owners,类似 contributors,但可以从 team 添加或移除用户。
搜索。Portus 提供你的私人注册表的内容的预览,同时有一个快速搜索镜像的功能。
Audit。所有相关事件都会被 Portus 自动记录,可被管理员用户分析。
搭建过程比较慢,主要是下载依赖镜像慢。
yum -y install epel-release
yum -y install python-pip
pip install -U docker-compose
git clone https://github.com/SUSE/Portus.git
cd Portus
修改Gemfile和Gemfile.lock 的第一行:https://rubygems.org修改为“http://rubygems.org
compose-setup.sh -e server IP
#这里就是漫长的安装过程啦,有人推荐先将所需的依赖镜像下载,然后再安装
(Portus安装依赖MariaDB,portus_web、rails4.2.2,Registry2.3.1,使用docker load 命令加载成镜像)
看到如下信息表示,安装成功。
Creating portus_db_1
Creating portus_crono_1
Creating portus_web_1
Creating portus_registry_1
Waiting for mariadb to be ready in 5 seconds
Portus: configuring database... failed, will retry
Waiting for mariadb to be ready in 5 seconds
Portus: configuring database... [SUCCESS]
###################
# SUCCESS #
###################
在SUCCESS下面则是提示信息,告诉你怎么使用Portus,根据提示步骤操作即可
Make sure port 3000 and 5000 are open on host 192.168.220.123
Open http://192.168.220.123:3000 with your browser and perform the following steps:
1. Create an admin account
2. You will be redirected to a page where you have to register the registry. In this form:
- Choose a custom name for the registry.
- Enter 192.168.220.123:5000 as the hostname.
- Do *not* check the "Use SSL" checkbox, since this setup is not using SSL.
Perform the following actions on the docker hosts that need to interact with your registry:
- Ensure the docker daemon is started with the '--insecure-registry 192.168.220.123:5000'
- Perform the docker login.
To authenticate against your registry using the docker cli do:
$ docker login -u <portus username> -p <password> -e <email> 192.168.220.123:5000
To push an image to the private registry:
$ docker pull busybox
$ docker tag busybox 192.168.220.123:5000/<username>/busybox
$ docker push 192.168.220.123:5000/<username>/busybox
下图为当前Portus运行记录,上传了两个镜像 hello-world 和 webbase
在容器关闭后,想再次启动
docker start portus_db_1 portus_web_1 portus_crono_1 portus_registry_1
提交代码时分两步
- docker login 192.168.220.123:5000
输入在portus中新建的用户名和密码 - docker push 192.168.220.123:5000/busybox
之前问登录遇到: unauthorized: authentication required
问题: 在Teams-Create new team 点击无响应,关于对registry的权限控制待测试。
总结:此次安装消耗时间过多
在不知道registry有v1 和 v2 ,也不知道shipyard官方不支持v2,排查问题消耗时间多。
在知道只支持registry v2 的情况下,为了得到 shipyard-registry v2 ,重编译消耗时间多。
在转方向后,没有去看Nginx+ssl+registry 能达到什么效果,就先实施了,做了无用功。
归结1:使用新东西时--存在很多未知,要先做调查。
归结2:先有目标,判定是否能到预期目标,然后再执行(很低级的一个错误,有烦躁的情绪在里面)