Реестр контейнеров Docker
Подготовка
Для аутентификации вам потребуется создать в профиле транспортный токен, сохраните его для дальнейшей работы.
В таблице ниже указаны допустимые символы, которые можно использовать для атрибутов, встречающихся в командах.
Атрибут | Описание |
---|---|
имя пакета | Может содержать буквы нижнего регистра (а-я), верхнего регистра (А-Я), числа (0-9), точки (.), тире (-), нижнее подчеркивания (_). |
версия пакета | Может содержать цифры (0-9), точки (.) |
имя файла | Может содержать буквы нижнего регистра (а-я), верхнего регистра (А-Я), числа (0-9), точки (.), тире (-), нижнее подчеркивания (_). |
В документации ниже встречается атрибут {домен gitflic}
На его место необходимо указать домен, в зависимости от версии:
-
для SaaS версии
registry.gitflic.ru
-
для self-hosted
localhost:8080
Домен и порт для self-hosted версии может отличаться.
Авторизация
Выполните команду
docker login registry.gitflic.ru
или при использовании self-hosted
docker login localhost:8080
Для авторизации введите ваш логин аккаунта, далее вставьте ваш транспортный токен вместо пароля. Если аутентификация прошла успешно, вы получите сообщение Login Succeeded
Загрузка образов
Атрибут | Описание |
---|---|
домен_gitflic |
registry.gitflic.ru или ваш, в случае Self-Hosted версии |
ownerAlias |
Псевдоним владельца проекта |
projectAlias |
Псевдоним проекта |
companyAlias |
Псевдоним компании |
image_name:tag |
Название и тег Docker образа |
В проекте https://gitflic.ru/project/gitflic/documentation,
{companyAlias}
- gitflic,{projectAlias}
- documentation
Подготовка к отправке
Если вы хотите отправить в реестр контейнеров уже существующий образ, то его необходимо подготовить к отправке с помощью команды docker tag
.
Вариант для дальнейшей загрузки образа на уровне проекта
Шаблон команды:
docker tag {image_name:tag} {домен_gitflic}/project/{ownerAlias}/{projectAlias}/{image_name:tag}
Пример команды для выполнения:
docker tag ubuntu:latest localhost:8080/project/user/repo/ubuntu:latest
Вариант для дальнейшей загрузки образа на уровне компании
Шаблон команды:
docker tag {image_name:tag} {домен_gitflic}/company/{companyAlias}/{image_name:tag}
Пример команды для выполнения:
docker tag ubuntu:latest localhost:8080/company/test_company/ubuntu:latest
Вариант для дальнейшей загрузки образа на уровне инстанса
Шаблон команды:
docker tag {image_name:tag} {домен_gitflic}/{image_name:tag}
Пример команды для выполнения:
docker tag ubuntu:latest localhost:8080/ubuntu:latest
Сборка и отправка образа
Вариант для проекта
Шаблон команды:
docker build -t {домен_gitflic}/project/{ownerAlias}/{projectAlias}/{image_name:tag} .
docker push {домен_gitflic}/project/{ownerAlias}/{projectAlias}/{image_name:tag}
В проекте https://gitflic.ru/project/gitflicuser/myproject,
{ownerAlias}
- gitflicuser,{projectAlias}
- myproject
Пример команды для выполнения:
docker build -t localhost:8080/project/gitflicuser/myproject/my-docker:1.0.1 .
docker push localhost:8080/project/gitflicuser/myproject/my-docker:1.0.1
Вариант для компании
Шаблон команды
docker build -t {домен_gitflic}/company/{companyAlias}/{image_name:tag} .
docker push {домен_gitflic}/company/{companyAlias}/{image_name:tag}
В проекте https://gitflic.ru/project/gitflic/documentation, {companyAlias} - gitflic, {projectAlias} - documentation
Пример команды для выполнения
docker build -t localhost:8080/project/gitflic/docs/my-docker:1.0.1 .
docker push localhost:8080/project/gitflic/docs/my-docker:1.0.1
Вариант для инстанса
Шаблон команды
docker build -t {домен_gitflic}/{image_name:tag} .
docker push {домен_gitflic}/company/{companyAlias}/{image_name:tag}
Пример команды для выполнения
docker build -t localhost:8080/my-docker:1.0.1 .
docker push localhost:8080/my-docker:1.0.1
Проксирование образов
GitFlic поддерживает возможность подключения внешних Docker-реестров для работы с публичными и приватными образами. Это позволяет использовать GitFlic как единое хранилище для всех необходимых образов, в том числе загруженных из внешних источников. Также, проксирование позволяет автоматически загружать образ из внешних реестров, если он отсутствует в реестре GitFlic.
Добавление внешнего реестра
По умолчанию, в GitFlic (как в облачной версии, так и в Self-Hosted) уже установлен внешний реестр Docker Hub, что позволяет сразу использовать его публичные образы без дополнительной настройки.
Чтобы добавить новый внешний Docker-реестр, администратор сервиса должен выполнить следующие шаги:
1. Перейти в панель администратора -> раздел Реестр
2. На странице перейти на вкладку Внешние реестры
3. Нажать кнопку Добавить и заполнить форму, указав:
Поле | Значение |
---|---|
Тип | Container |
Название | Название реестра. |
URL | URL адрес реестра. Например, registry.hub.docker.com для Docker Hub. |
Вес | Определяет приоритет реестра. Указывается числом: чем больше значение, тем выше приоритет. В первую очередь сервис обращается к реестру с наибольшим весом. |
Время жизни артефакта | Длительность хранения спроксированного образа в часах. По истечении срока он будет удалён. |
Имя пользователя | Указывается, если доступ к реестру требует аутентификации. |
Пароль / Access token | Необходим при работе с приватными образами. |
После добавления внешнего реестра вы сможете загружать образы через GitFlic с использованием проксирования.
Использование проксирования
Для использования проксирования необходимо, при загрузке образов, указывать URL-адрес реестра GitFlic.
Пример использования
Вместо:
docker pull ubuntu
Используйте:
docker pull registry.example.com/ubuntu
где registry.example.com
— URL к вашему GitFlic-реестру.
Условия успешного проксирования
- Для того, чтобы образ в результате проксирования был сохранён в GitFlic, клиент должен запросить манифест образа через GitFlic.
- Если клиент загрузил только блобы (части образа), но не запросил манифест, образ не будет собран и сохранён в GitFlic.
- После успешного проксирования полного образа, он отобразится в реестре.
Если клиент ранее загружал некоторые слои образа и запросил только недостающие части, дозагрузка и сборка образа в GitFlic будет выполнена автоматически. Процесс может занять до 30 минут.
Мульти-архитектурные образы
Реестр контейнеров в GitFlic поддерживает мульти-архитектурные образы, что позволяет загружать и хранить образы, которые могут работать на разных платформах.
Сборка мульти-архитектурных образов
Для сборки мульти-архитектурного образа мы рекомендуем использовать утилиту docker buildx.
1. Проверьте наличие установленный утилиты buildx
:
docker buildx version
2. Установите утилиту buildx
(если не установлена):
Ubuntu, Debian:
apt install docker-buildx-plugin
Если в вашей ОС отсутствует репозиторий с данным пакетом, вы можете загрузить его вручную, например с GitHub:
mkdir -p ~/.docker/cli-plugins
curl -sLo ~/.docker/cli-plugins/docker-buildx "https://github.com/docker/buildx/releases/download/v0.20.1/buildx-v0.20.1.linux-amd64"
chmod +x ~/.docker/cli-plugins/docker-buildx
При использовании Docker Desktop, данный шаг можно пропустить.
3. Проверьте наличие билдера (конструктора):
docker buildx ls
4. Создайте билдер, если он отсутствует:
docker buildx create --use --name my_builder
Если вы используете Docker Desktop, то можете пропустить данный шаг, так как в нем присутствует стандартный билдер.
5. Соберите образ для нескольких архитектур и отправьте его в реестр контейнеров.
Пример команды для сборки и отправки образа в реестр проекта для архитектур amd64
и arm64
:
docker buildx build --platform linux/amd64,linux/arm64 -t registry.gitflic.ru/project/{ownerAlias}/{projectAlias}/{image_name:tag} --push .
Проверка мульти-архитектурных образов
После загрузки образа в реестр, вы можете убедиться в поддержке нескольких архитектур с помощью команды:
docker buildx imagetools inspect registry.gitflic.ru/project/{ownerAlias}/{projectAlias}/{image_name:tag}
Вывод должен содержать информацию о нескольких платформах. Пример:
docker manifest inspect registry.gitflic.ru/ubuntu:latest
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 529,
"digest": "sha256:104f82606ea66da00e6cfecbcccdb53ba4238a7057bed809f004107ad8e90c97",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 529,
"digest": "sha256:2d21d74b3a6ff089355d2442aa9aac3ff625ea55567639393827913718c7f65a",
"platform": {
"architecture": "arm64",
"os": "linux",
"variant": "v8"
}
}
]
}
Запуск образов на разных архитектурах
Для того, чтобы запускать образ на разных архитектурах, используйте параметр --platform
в Docker.
- Пример запуска образа на архитектуре
amd64
:
docker run --rm --platform linux/amd64 registry.gitflic.ru/project/{ownerAlias}/{projectAlias}/{image_name:tag}
- Пример запуска образа на архитектуре
arm64
:
docker run --rm --platform linux/arm64 registry.gitflic.ru/project/{ownerAlias}/{projectAlias}/{image_name:tag}
Удаление образов
Чтобы удалить образ с помощью пользовательского интерфейса GitFlic:
-
Перейдите в раздел Реестр пакетов
-
Найдите нужный вам образ в списке и откройте его
-
Чтобы удалить образ полностью, на главной странице образа нажмите кнопку корзины. Для удаления конкретной версии образа, перейдите в раздел Теги и нажмите кнопку корзины рядом с нужным тегом.
Обратите внимание, данное действие необратимо, после удаления образа восстановить его можно только с помощью повторной загрузки.