我想设置一个私有版本的hub.docker.com,让我创建一个由我的私有gitlab实例推送的webhook。换句话说 - 当我推送到Gitlab时,这个Docker注册表会检查存储库并构建它。
我需要这个能够抵御恶意Dockerfiles,这样服务器就不会轻易被泄露,泄露所有托管容器的内容。有没有办法轻松实现这一目标?
您需要单独单独设置注册表和构建服务器。这样,当您推送到GitLab时,它会通知构建系统(通过POST)并构建映像。构建完成后,最终映像将被推送到注册表(自托管或hub.docker.com)。
sudo docker run --restart='always' -d -p 5000:5000 --name=registry \
-e GUNICORN_OPTS=["--preload"] \
-v /srv/registry:/tmp/registry \
registry
sudo docker run -d -P --restart='always' \
-e ENV_DOCKER_REGISTRY_HOST=<REGISTRY_IP> \
-e ENV_DOCKER_REGISTRY_PORT=5000 \
konradkleine/docker-registry-frontend
# 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一起使用。
为了帮助未来的访问者,gitlab现在有一个内置的docker image repo(如果它没有在2015年)。 https://docs.gitlab.com/ee/user/project/container_registry.html