Gitlab Registry
Garbage
docker exec -it gitlab gitlab-ctl registry-garbage-collect --delete-manifests
Internal
Docker Registry запущен в Gitlab по умолчанию. Для того, чтобы получить к нему доступ достаточно пробросить порт 5050 при создании контейнера.
Для использования s3 в качестве хранилища образов необходимо: (1) запустить minio (2) прописать конфигурацию подключения в gitlab.rb. Запуск minio смотри в блокноте sb_devops Конфигурация подключения
External
GitLab Container Registry administration
How to setup omnibus installation to use an external Docker registry?
Docker login fails to gitlab registry, when gitlab and the registry are on separate domains
Setup of GitLab Docker on Synology DSM
Token authentication error: token signed by untrusted key with ID: "xyz"
Registry Auth via Gitlab
Ниже приведен способ, как "подружить" gitlab, запущенный из docker-образа, и внешний docker-registry. Под понятием "внешний" предполагается Registry не из состава gitlab.
Прописываем в /srv/gitlab/config/gitlab.rb следующую конфигурацию:
# /srv/gitlab/config/gitlab.rb
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_api_url'] = "https://registry.example.com:5000"
gitlab_rails['registry_key_path'] = "/etc/gitlab/token.key"
gitlab_rails['registry_issuer'] = "gitlab-issuer"
Опция registry_key_path определяет куда gitlab запишет внутренний RSA ключ, который необходимо использовать для подписи сертификата, который, в свою очередь, будет отдан registry.
Выпускаем сертификат с помощью token.key
openssl req -key token.key -new -x509 -days 3650 -out token.crt
Сертификат token.crt копируем на сервер с registry
Конфигурируем registry с учетом данного сертификата:
version: '3'
services:
registry:
image: registry:2
restart: always
ports:
- 5005:5000
environment:
REGISTRY_HTTP_ADDR: 0.0.0.0:5000
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
REGISTRY_LOG_LEVEL: info
REGISTRY_AUTH_TOKEN_REALM: https://gitlab.onrails.ru/jwt/auth
REGISTRY_AUTH_TOKEN_SERVICE: container_registry
REGISTRY_AUTH_TOKEN_ISSUER: gitlab-issuer
REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE: /certs/token.crt
volumes:
- /opt/registry/data:/var/lib/registry
- /opt/registry/certs:/certs
Артефакты:
1) Раздел Registry в проектах Gitlab
2) Авторизация в Docker Registry через Gitlab
docker login registry.example.com:5000
Username: gitlab-username
Password: gitlab-password
Login Successed
3) Заливка образа в Registry и отображение его в соответствующем разделе проекта Gitlab
docker push registry.example.com:5000/username/project-name