自行托pipe的替代hub.docker.com?

我想build立一个私人版本的hub.docker.com,让我创build一个由我的私人gitlab实例推送的webhook。 换句话说 – 当我推送到Gitlab时,这个Dockerregistry会检出这个存储库并构build它。

我需要这个来抵御恶意的Docker文件,这样服务器就不会轻易被泄露,从而泄露所有托pipe容器的内容。 有没有一种方法可以轻松实现?

您需要单独设置registry和生成服务器。 通过这种方式,当您推送到GitLab时,它会通知构build系统(通过POST)并构build映像。 构build完成后,最终映像被推送到registry(自托pipe或hub.docker.com)。

设置registry

  • 首先确保你已经安装了docker。
  • 然后运行下面的命令,这将启动registry的一个实例。

    sudo docker run --restart='always' -d -p 5000:5000 --name=registry \ -e GUNICORN_OPTS=["--preload"] \ -v /srv/registry:/tmp/registry \ registry 
  • 要公开上述registry的Web UI,请运行以下命令。 (用registry的IPreplace)

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

设置生成服务器

  • 无处不在的Jenkins构build服务器可以填补这个空白。
  • 您需要安装部分模拟GitLab CI API的GitLab CI插件 (用于Jenkins)。 注意,你还需要从“Manage Jenkins” – >“configuration系统”安装后configurationCI插件。 请注意,私人令牌function未实现。 所以在这个领域随机input一些东西。


    在这里输入图像说明

  • 现在,您可以使用Services – > GitLab CIconfiguration您的GitLab仓库,以在PUSH到仓库之后触发CI事件。
    请注意:我已经在GitLab v7.7.2上试了这个。 AFAIK最新的GitLab版本已经整合了早期的GitLab CI。


    在这里输入图像说明

  • 在jenkins服务器上,创build一个新的自由式项目或编辑一个现有的项目。 然后检查build立推事件


    Gitlab CI推送

  • 现在进行最后一步,将下面的代码片段作为shell脚本执行。 请注意,您需要使用不安全的registry选项来启动docker守护程序。 请参阅: https : //docs.docker.com/registry/insecure/

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

另外

看看tarzan 。 它的工作原理与docker集线器非常相似,但需要从GitHub事件(而不是GitLab)触发。 也因为我没有尝试过,我不能担保。

我怀疑即使tarzan只能用于GitHub,也可能与GitLab协同工作。