Частный реестр 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. В вашем случае:
- добавить
--registry-mirror=http://dockerstore:5555
рассказать демон предпочитают использовать локальное зеркало, а потом dockerhub. источник - добавить
--insecure-registry dockerstore:5000
для доступа к частному реестру без дополнительной настройки. См.ответ - перезагрузка 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 подтверждает, что:
в настоящее время невозможно отразить другой частный реестр. Только центральный концентратор может быть зеркальным.