Настройка 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 Hub можно настроить OSA Proxy Go как registry mirror в /etc/docker/daemon.json:
После изменения перезапустите Docker daemon.
Если включено несколько Docker-репозиториев, используйте схему с поддоменами, где поддомен соответствует repository[*].name:
Это требуется из-за особенностей 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.