Я пытаюсь запустить частный реестр докера на сервере.Я использую Docker версии 18.06.1-ce build e68fc7a для этой настройки как сервера, так и тестового клиента.
(Примечание: я заменил реальный домен на my.domain.com во всем приведенном ниже коде)
Из кусочков блогов мой config.yml для реестра теперь выглядит следующим образом.
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
host: https://my.domain.com
headers:
X-Content-Type-Options: [nosniff]
tls:
letsencrypt:
cachefile: /etc/docker/registry/letsencrypt.json
email: me@my.domain.com
auth:
htpasswd:
realm: basic-realm
path: /etc/docker/registry/htpasswd
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
Я запускаю контейнер для реестра с этим:
#!/bin/bash
docker run -d -p 5000:5000 \
-p 443:5000 \
--name test-registry \
-v /var/lib/docker/registry:/var/lib/registry \
-v /etc/docker/registry/config.yml:/etc/docker/registry/config.yml \
registry:2
Журналпоказывает это при запуске:
docker logs -f docker-registry
time="2018-10-23T01:56:51Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.7.6 instance.id=82c8a49d-58d2-4429-b8c2-fa67f3d64617 version=v2.6.2
time="2018-10-23T01:56:51Z" level=info msg="redis not configured" go.version=go1.7.6 instance.id=82c8a49d-58d2-4429-b8c2-fa67f3d64617 version=v2.6.2
time="2018-10-23T01:56:51Z" level=info msg="Starting upload purge in 37m0s" go.version=go1.7.6 instance.id=82c8a49d-58d2-4429-b8c2-fa67f3d64617 version=v2.6.2
time="2018-10-23T01:56:51Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.7.6 instance.id=82c8a49d-58d2-4429-b8c2-fa67f3d64617 version=v2.6.2
2018/10/23 01:56:51 [INFO] acme: Registering account for me@my.domain.com
time="2018-10-23T01:56:52Z" level=info msg="listening on [::]:5000, tls" go.version=go1.7.6 instance.id=82c8a49d-58d2-4429-b8c2-fa67f3d64617 version=v2.6.2
Когда я получаю доступ к нему извне, я добавляюсь в журнал:
2018/10/23 01:59:56 [INFO][my.domain.com] acme: Obtaining bundled SAN certificate
2018/10/23 01:59:56 [INFO][my.domain.com] acme: Could not find solver for: http-01
2018/10/23 01:59:56 [INFO][my.domain.com] acme: Could not find solver for: tls-alpn-01
2018/10/23 01:59:56 [INFO][my.domain.com] acme: Could not find solver for: dns-01
2018/10/23 01:59:56 http: TLS handshake error from 70.36.174.194:43028: map[my.domain.com:[my.doman.com] acme: Could not determine solvers]
Я видел несколько сообщений, которые указывают, что некоторые методы вызова неДольше поддерживается letsencrypt, также много постов о похожих проблемах.И много устаревших отчетов об ошибках.В последних документах докера я ничего не видел о выборе или включении отключения типов вызовов для letsencrypt.
Я ищу способ заставить это работать.