Не может вытолкнуть / вытащить из частного реестра при запуске в рое - PullRequest
0 голосов
/ 27 октября 2018

Когда я запускаю реестр Docker в Swarm:

docker service create \
  --name docker-registry \
  --mount type=bind,src=/some/path,dst=/var/lib/registry \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
  --publish 5000:5000 \
  --replicas 2 \
  registry:2

и пытается переместить или вытащить в этот реестр (с другого сервера) зависает:

$ docker tag hello-world:latest 111.222.333.333:5000/hello-world
$ docker push 111.222.333.333:5000/hello-world
The push refers to a repository [111.222.333.333:5000/hello-world]
428c97da766c: Retrying in 1 second

но он работает, когда я запускаю его как контейнер:

docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name docker-registry \
  -v /some/path:/var/lib/registry \
  registry:2

Я добавил реестр IP в незащищенные реестры. Что я делаю не так?

1 Ответ

0 голосов
/ 27 октября 2018

Вы установили --replicas 2 для обслуживания, и они монтируют /some/path с хоста.Это означает:

  • 2 docker-registry контейнеры на одном и том же хосте обращаются /some/path
  • 2 docker-registry контейнеры на разных хостах обращаются /some/path

В обоих случаях то, как docker-registry управляет локальным хранилищем, несовместимо с такой конфигурацией.Swarm будет распределять все запросы API между экземплярами, вызывая повреждение данных и непредвиденное поведение.

Необходимо убедиться, что docker-registry работает на одном хосте с одинаковым /some/path всегда.

Дляконфигурации высокой доступности, есть упоминания в документации .

...