Докер составляет: Трафик и Реестр реестра - PullRequest
0 голосов
/ 13 мая 2019

Мой компьютер - это Windows 10 PRO с Docker Desktop CE версии 2.0.0.3 (31259) (Engine 18.09.2).

Я создаю docker-compose.yml файл, который запускает контейнеры Traefik, Portainer, GitLab, Jenkins и Registry. Traefik настроен с использованием SSL (самозаверяющий сертификат). Я достиг запуска контейнеров в их доменах:

Когда я запускаю эти URL в браузере, он возвращает мне ошибку сертификата, но я без проблем обращаюсь к веб-клиентам. Если я получу доступ к URL https://registry.localhost/v2/_catalog из браузера, я смогу прочитать: {"repositories":[]} Это хорошо. Я только начал свой реестр, и он пуст.

Я создал самозаверяющий сертификат с:

"C:\Program Files\OpenSSL-Win64\bin\openssl.exe" req -x509 -nodes -days 365 -newkey rsa:2048 -keyout traefik.key -out traefik.crt

Я прикрепляю файлы конфигурации. Я опускаю часть docker-compose.yml для краткости.

докер-compose.yml

version: '3.7'

services:
  traefik:
    image: traefik
    container_name: traefik
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - D:\docker-vols\paas\traefik\traefik.toml:/traefik.toml
      - D:\docker-vols\paas\traefik\certs:/certs/
    labels:
      traefik.enable: true
      traefik.frontend.rule: "Host:traefik.localhost"
      traefik.port: 8080
      # Escapar $ con otro $
      traefik.frontend.auth.basic: "root:$$apr1$$3sEZB9aF$$y8ii5P4E8/KAhCiyQoS8I0"
#  portainer:
# ...
#  gitlab:
# ...
#  jenkins:
# ...
  registry:
    image: registry:2
    container_name: registry
    volumes:
      - D:\docker-vols\paas\registry\registry:/var/lib/registry
    labels:
      traefik.enable: true
      traefik.frontend.rule: "Host:registry.localhost"
      traefik.port: 5000

traefik.toml

defaultEntryPoints = ["http", "https"]
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]
    [[entryPoints.https.tls.certificates]]
      certFile = "/certs/traefik.crt"
      keyFile = "/certs/traefik.key"

[api]

[docker]
  endpoint = "unix:///var/run/docker.sock"
  domain = "docker.localhost"
  watch = true
  exposedbydefault = false

Я запускаю его: docker-compose up

Моя проблема возникает, когда я хочу отправить образ в мой реестр с хоста (моего компьютера с Windows), чтобы проверить, что он работает отлично. Я следую за следующими шагами:

docker pull hello-world
docker tag hello-world registry.localhost/my-hello-world
docker push registry.localhost/my-hello-world

Затем возвращается

The push refers to repository [registry.localhost/my-hello-world]
Get https://registry.localhost/v2/: dial tcp: lookup registry.localhost on 192.168.65.1:53: no such host

Где моя ошибка? Спасибо.


РЕШЕНИЕ:

Я забыл добавить к /etc/hosts:

127.0.0.1 registry.localhost
...