当前位置:  开发笔记 > 运维 > 正文

hub.docker.com的自托管替代方案?

如何解决《hub.docker.com的自托管替代方案?》经验,为你挑选了1个好方法。

我想设置一个私有版本的hub.docker.com,让我创建一个由我的私有gitlab实例推送的webhook.换句话说 - 当我推送到Gitlab时,这个Docker注册表会检查存储库并构建它.

我需要这个能够抵御恶意Dockerfiles,这样服务器就不会轻易被泄露,泄露所有托管容器的内容.有没有办法轻松实现这一目标?



1> 小智..:

您需要单独单独设置注册表和构建服务器.这样,当您推送到GitLab时,它会通过构建系统(通过POST)通知并构建映像.构建完成后,最终映像将被推送到注册表(自托管或hub.docker.com).

设置注册表

首先确保已安装docker.

然后运行以下命令,该命令将启动注册表实例.

sudo docker run --restart='always' -d -p 5000:5000 --name=registry \
-e GUNICORN_OPTS=["--preload"] \
-v /srv/registry:/tmp/registry \
registry

要公开上述注册表的Web UI,请运行以下命令.(替换为注册表的IP)

sudo docker run  -d -P --restart='always' \
-e ENV_DOCKER_REGISTRY_HOST= \
-e ENV_DOCKER_REGISTRY_PORT=5000 \
konradkleine/docker-registry-frontend

设置构建服务器

无处不在的Jenkins构建服务器可以填补这个空白.

您需要安装部分模拟GitLab CI API 的GitLab CI插件(适用于Jenkins).请注意,您需要在安装后从"Manage Jenkins" - >"Configure System"配置CI插件.请注意,未实现私有令牌功能.因此,在该字段中输入随机内容.


在此输入图像描述

现在,您可以配置GitLab存储库,以便在使用服务 - > GitLab CI将PUSH推送到存储库后启动CI事件.
请注意:我在GitLab v7.7.2上尝试过这个.AFAIK较新的GitLab版本已经与早期的单独GitLab CI进行了交互.


在此输入图像描述

在jenkins服务器上,创建一个新的自由式项目或编辑现有项目.然后选中Build on Push Events.


Gitlab CI推

现在,对于最后一步,执行以下代码片段作为shell脚本.请注意,您需要使用insecure注册表选项启动docker守护程序.参考:https://docs.docker.com/registry/insecure/

# Build and push image
cd $WORKSPACE
docker build -t :5000/:latest .
docker push :5000/:latest

另外

看看tarzan.它与docker hub非常相似,但它需要从GitHub事件(而不是GitLab)触发.还因为我没有试过,我不能保证.

我怀疑即使tarzan只能用于GitHub,它也可以与GitLab一起使用.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有