Как запустить личный реестр докеров с помощью letsencrypt в Ubuntu.18.04 - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь запустить частный реестр докера на сервере.Я использую 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.

Я ищу способ заставить это работать.

...