Частный реестр Docker с зеркалом

Я создал два контейнера Docker. Первый предоставляет частный реестр докеров, а второй-зеркало официального реестра докеров:

docker run -d --name registry -v /local/path/to/registry:/registry -e SETTINGS_FLAVOR=local -e STORAGE_PATH=/registry -p 5000:5000 registry

docker run -d --name mirror -v /local/path/to/mirror:/registry -e STORAGE_PATH=/registry -e STANDALONE=false -e MIRROR_SOURCE=https:/registry-1.docker.io -e MIRROR_SOURCE_INDEX=https://index.docker.io -p 5555:5000 registry

теперь я хотел бы объединить оба. Всякий раз, когда пользователь!--4-->дерет изображения он должен сначала запросить частный реестр, а затем зеркало. И когда изображения толкнул они должны быть переданы только в частный реестр.

Я понятия не имею, как это можно сделать. Любая помощь ценится.

3 ответов


вы не можете просто заставить все настройки Нажимаем команды, чтобы нажать на ваш личный реестр. Одна из причин заключается в том, что у вас может быть любое количество этих регистров. Сначала вы должны сказать докеру, куда нажать, пометив изображение (см. ниже).

вот как вы можете настроить хосты docker для работы с запущенным частным реестром и локальным зеркалом.

настройка клиента

предположим, что вы используете как зеркальный, так и частный реестр на (разрешаемом) хосте называется dockerstore. Зеркало на порту 5555, реестр на 5000.

затем на клиент машина(ы) вы должны передать дополнительные параметры для запуска docker daemon. В вашем случае:

  1. добавить --registry-mirror=http://dockerstore:5555 рассказать демон предпочитают использовать локальное зеркало, а потом dockerhub. источник
  2. добавить --insecure-registry dockerstore:5000 для доступа к частному реестру без дополнительной настройки. См.ответ
  3. перезагрузка docker daemon

использование зеркала

при вытягивании любого изображения первым источником будет локальное зеркало. Вы можете подтвердить, запустив docker pull, например

docker pull debian

на выходе будет сообщение о том, что изображение извлекается из вашего зеркала - dockerstore:5000

использование локального реестра

для того, чтобы толкать в частный реестр сначала надо тег изображения быть нажатым с полное название реестра. Убедитесь, что у вас есть точка или двоеточие в первая часть тега, чтобы сказать докеру, что изображение должно быть помещено в частный реестр.

Docker ищет либо "."(разделитель домена) или ":" (разделитель портов), чтобы узнать, что первая часть имени репозитория является местоположением, а не именем пользователя.

пример:

изображение бирки 30d39e59ffe2 как dockerstore: 5000 / myapp: стабильный

docker tag 30d39e59ffe2 dockerstore:5000/myapp:stable

Нажмите его в частный реестр

docker push dockerstore:5000/myapp:stable

тогда вы также можете тянуть

docker pull dockerstore:5000/myapp:stable

имена репозиториев должны быть глобальные, это хранилище redis всегда ссылается на официальное изображение Redis из Docker Hub. Если вы хотите использовать частный реестр, вы добавляете к имени репозитория имя реестра, например localhost.localdomain:5000/myimage:mytag.

поэтому, когда вы потянете или нажмете, он автоматически перейдет в соответствующий реестр. Зеркало должно быть легко настроить, вы просто передаете URL-адрес демону с помощью


просто для ясности,документация docker подтверждает, что:

в настоящее время невозможно отразить другой частный реестр. Только центральный концентратор может быть зеркальным.