GitLab Containers
This tutorial shows how to set up the basic GitLab pipeline to automaticaly build Docker image and publish it to a container registry.
Prerequisites¶
- Gitlab repository
- Dockerfile in the repository with desired container configuration
Configure CI/CD Gitlab Pipeline File¶
-
In your desired repository, use Set up CI/CD button as shown in the following image.

-
In the
.gitlab-ci.ymleditor copy and paste following snippet:
docker-build:
image: docker:latest
stage: build
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- |
if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
tag=""
echo "Running on default branch '$CI_DEFAULT_BRANCH': tag = 'latest'"
else
tag=":$CI_COMMIT_REF_SLUG"
echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
fi
- docker build --pull -t "$CI_REGISTRY_IMAGE${tag}" .
- docker push "$CI_REGISTRY_IMAGE${tag}"
rules:
- if: $CI_COMMIT_BRANCH
exists:
- Dockerfile
This will use the standard Gitlab Container Registry available within your own project. Note the variable $CI_REGISTRY, which is specific for the repository.
-
Commit changes

-
Pipeline will be triggered and it's status could be shown within the last commit information.
For list of jobs for given pipeline visit CI/CD > Pipelines
If pipeline job succeeds, the freshly built container image will be uploaded to Gitlab's container registry.
The Packages & Registries > Container registry is available here:

For advanced information please refer to the official documentation
How to Use Images From GitLab Registry¶
If the project's visibility within GitLab is public and container registry is not limited to authenticated users, simply use:
docker run [options] registry.example.com/group/project/image [arguments]
If you are using MUNI ICS GitLab, the registry URL is: registry.gitlab.ics.muni.cz
If project visibility or container registry are set to private, authentication to container registry is needed. You will need to create deploy token and use it as descibed in the official documentation
For more information please refer to official documentation.
Upload Image to Custom Container Registry¶
Change the options of docker login command in before_script part of your definition of pipeline (gitlab-ci.yml).
before_script:
- docker login -u "username" -p "password" example.io