Dependency Proxy (PREMIUM)

Introduced in GitLab Premium 11.11.

The GitLab Dependency Proxy is a local proxy you can use for your frequently-accessed upstream images.

In the case of CI/CD, the Dependency Proxy receives a request and returns the upstream image from a registry, acting as a pull-through cache.

Prerequisites

To use the Dependency Proxy:

Supported images and packages

The following images and packages are supported.

Image/Package GitLab version
Docker 11.11+

For a list of planned additions, view the direction page.

View the Dependency Proxy

To view the Dependency Proxy:

  • Go to your group's Packages & Registries > Dependency Proxy.

The Dependency Proxy is not available for projects.

Use the Dependency Proxy for Docker images

You can use GitLab as a source for your Docker images.

Prerequisites:

  • Your images must be stored on Docker Hub.
  • Docker Hub must be available. Follow this issue for progress on accessing images when Docker Hub is down.

To store a Docker image in Dependency Proxy storage:

  1. Go to your group's Packages & Registries > Dependency Proxy.

  2. Copy the Dependency Proxy URL.

  3. Use one of these commands. In these examples, the image is alpine:latest.

    • Add the URL to your .gitlab-ci.yml file:

      image: gitlab.example.com/groupname/dependency_proxy/containers/alpine:latest
    • Manually pull the Docker image:

      docker pull gitlab.example.com/groupname/dependency_proxy/containers/alpine:latest
    • Add the URL to a Dockerfile:

      FROM gitlab.example.com/groupname/dependency_proxy/containers/alpine:latest

GitLab pulls the Docker image from Docker Hub and caches the blobs on the GitLab server. The next time you pull the same image, GitLab gets the latest information about the image from Docker Hub, but serves the existing blobs from the GitLab server.

Clear the Dependency Proxy cache

Blobs are kept forever on the GitLab server, and there is no hard limit on how much data can be stored.

To reclaim disk space used by image blobs that are no longer needed, use the Dependency Proxy API.