【问题标题】:Self-hosted alternative to hub.docker.com?hub.docker.com 的自托管替代方案?
【发布时间】:2015-12-09 20:32:04
【问题描述】:

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

我需要它来抵抗恶意 Dockerfile,这样服务器就不会被轻易破坏,从而泄露所有托管容器的内容。有什么方法可以轻松实现吗?

【问题讨论】:

    标签: docker dockerfile self-hosting docker-registry dockerhub


    【解决方案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=<REGISTRY_IP> \
      -e ENV_DOCKER_REGISTRY_PORT=5000 \
      konradkleine/docker-registry-frontend
      

    设置构建服务器

    • 无处不在的 Jenkins 构建服务器可以填补这一空白。
    • 您需要安装部分模拟 GitLab CI API 的 GitLab CI 插件(用于 Jenkins)。请注意,您还需要在安装后从“管理 Jenkins”->“配置系统”配置 CI 插件。请注意,未实现私有令牌功能。因此,在该字段中输入随机的内容。


    • 现在您可以使用 Services -> GitLab CI 将 GitLab 存储库配置为在推送到存储库后触发 CI 事件。
      请注意:我已经在 GitLab v7.7.2 上尝试过了。 AFAIK 较新的 GitLab 版本已与较早的单独 GitLab CI 交互。


    • 在 jenkins 服务器上,创建一个新的 freestyle 项目或编辑一个现有项目。然后检查基于推送事件构建


    • 现在进行最后一步,将以下代码 sn-p 作为 shell 脚本执行。请注意,您需要使用不安全的注册表选项启动 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 hub 非常相似,但需要从 GitHub 事件(而不是 GitLab)触发。也因为没试过,所以不能保证。

    我怀疑即使 tarzan 据说只适用于 GitHub,它也可能适用于 GitLab。

    【讨论】:

    • Tarzan 将不再维护:“已弃用此存储库最初是一个好主意,但我没有足够的时间或愿望来处理它。所以,它留在这里用于历史/教育目的, 但请注意它本质上是死代码。如果其他人想要分叉和开发/维护它,请成为我的客人:)" github.com/nathanleclaire/tarzan
    【解决方案2】:

    为了帮助未来的访问者,GitLab 企业版现在有一个内置的 docker 镜像仓库(如果 2015 年没有的话)。 https://docs.gitlab.com/ee/user/project/container_registry.html

    猜你喜欢
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多