gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:02:36 24 4
gpt4 key购买 nike

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

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

最佳答案

您需要分别设置注册表和构建服务器。这样,当您推送到 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 插件 (对于 Jenkins),它部分模拟了 GitLab CI API。请注意,您还需要在安装后从“管理 Jenkins”->“配置系统”配置 CI 插件。请注意,未实现私有(private) token 功能。因此,在该字段中输入随机的内容。
    enter image description here
  • 现在,您可以使用 将 GitLab 存储库配置为在推送到存储库后触发 CI 事件服务 -> GitLab CI . 请注意:我已经在 GitLab v7.7.2 上试过了。 AFAIK 较新的 GitLab 版本已与较早的单独 GitLab CI 交互。
    enter image description here
  • 在 jenkins 服务器上,创建一个新的 freestyle 项目或编辑一个现有项目。然后检查在推送事件上构建。
    Gitlab CI Push
  • 现在对于最后一步,将以下代码片段作为 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)触发。也因为我没有尝试过,我不能保证。

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

    关于docker - hub.docker.com 的自托管替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34188425/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com