Перейти к содержанию

Настройка Docker

docker:
  enabled: true
  repository:
    - name: docker
      registry: https://registry-1.docker.io
      auth-token-url: https://auth.docker.io
      work-mode: strict_wait

Docker использует стандартные endpoints Registry API v2. Имя репозитория из конфигурации не добавляется в путь клиента.

docker pull osa-proxy.example.com/library/alpine:latest

Для Docker Hub можно настроить OSA Proxy Go как registry mirror в /etc/docker/daemon.json:

{
  "registry-mirrors": ["https://osa-proxy.example.com"]
}

После изменения перезапустите Docker daemon.

Если включено несколько Docker-репозиториев, используйте схему с поддоменами, где поддомен соответствует repository[*].name:

docker pull docker.osa-proxy.example.com/library/alpine:latest

Это требуется из-за особенностей Docker Registry API v2: клиент всегда обращается к фиксированным путям /v2/... и /token, поэтому имя репозитория OSA Proxy Go нельзя добавить первым сегментом пути, как для npm, Maven или PyPI. Когда настроен один Docker-репозиторий, OSA Proxy Go может обслуживать его через основной host. Когда Docker-репозиториев несколько, сервис определяет нужную конфигурацию по host запроса.

Например, для конфигурации:

docker:
  enabled: true
  repository:
    - name: dockerhub
      registry: https://registry-1.docker.io
      auth-token-url: https://auth.docker.io
    - name: company
      registry: https://registry.company.example
      auth-token-url: https://registry.company.example

клиенты должны использовать разные hostnames:

docker pull dockerhub.osa-proxy.example.com/library/alpine:latest
docker pull company.osa-proxy.example.com/team/image:latest

Для такой схемы настройте DNS wildcard или отдельные DNS-записи для поддоменов, TLS-сертификат с поддержкой этих имен и reverse proxy/load balancer, который передает запросы на OSA Proxy Go с исходным Host.

Страница была полезна?