Как открыть Docker-Registry за Apache httpd?

Я запускаю частный docker-registry v2 со следующим файлом docker-compose.yml:

registry:
  restart: always
  image: registry:2
  ports:
    - 5000:5000
  environment:
    REGISTRY_HTTP_TLS_CERTIFICATE: /certs/server-cert.pem
    REGISTRY_HTTP_TLS_KEY: /certs/server-key.pem
    REGISTRY_AUTH: htpasswd
    REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
    REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
  volumes:
    - /data/docker-registry:/var/lib/registry
    - /certs/docker-registry:/certs
    - /auth/docker-registry:/auth

и я могу выполнить вход локально (SSH, Jenkins, ...) на http: // локальный: 5000.

Теперь я хотел бы открыть этот реестр с помощью Apache httpd. Я использую следующую версию httpd на CentOS 7:

[root@dev-machine conf.d]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Jun 27 2018 13:48:59

Это мой vhosts.conf:

<VirtualHost *:443>
    ServerName dev-machine.com
    ServerAlias www.dev-machine.com

    ErrorLog logs/dev-machine.com-error_log
    CustomLog logs/dev-machine.com-access_log common

    SSLEngine on
    SSLCertificateFile /certs/docker-registry/server-cert.pem
    SSLCertificateKeyFile /certs/docker-registry/server-key.pem

    Header set Host "dev-machine.com"
    Header set "Docker-Distribution-Api-Version" "registry/2.0"
    RequestHeader set X-Forwarded-Proto "https"

    ProxyRequests off
    ProxyPreserveHost on

    ProxyPass           /registry       http://127.0.0.1:5000/
    ProxyPassReverse    /registry       http://127.0.0.1:5000/

    <Location /registry>
        Order deny,allow
        Allow from all

        AuthName "Registry Authentication"
        AuthType basic
        AuthUserFile "/auth/htpasswd"
        Require valid-user
    </Location>
</VirtualHost>

Проблема, с которой я столкнулся, заключается в том, что когда я пытаюсь войти в реестр, я получаю следующую ошибку:

izio@1z10:~$ docker login https://dev-machine.com/registry
Username: user
Password: 
Error response from daemon: login attempt to https://dev-machine/v2/ failed with status: 404 Not Found

Похоже, что перенаправление на / v2 вместо использования назначенного URL-адреса в vhosts. Что не так или не так в этой конфигурации?

возможно, для этого легко использовать nginx вместо apache

Ijaz Ahmad Khan 20.10.2018 15:24

Разве это не создаст проблем, поскольку сейчас все это стоит за Apache, и, кроме того, единственные порты, которые я могу использовать, - это 80 и 443?

1Z10 20.10.2018 17:03

@IjazAhmadKhan В apache тоже легко. Также обратите внимание, что apache с многопоточный mpm работает очень хорошо (у меня нет тестов, но я подозреваю, что он может быть лучше, чем nginx).

peterh 16.09.2019 17:44

Эта конфигурация все еще работает? Я пытался выполнить ту же настройку, и что бы я ни делал, я не могу использовать псевдоним, отличный от / v2.

Simão Silva 03.10.2021 02:43
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
5
4
2 603
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто обновите свой httpd.conf вот так


ProxyPass / реестр http://127.0.0.1:5000/v2
ProxyPassReverse / реестр http://127.0.0.1:5000/v2

Другие вопросы по теме