Реестр как сквозной кеш

Эта страница содержит информацию о размещении вашего собственного реестра с помощью реестр Docker с открытым исходным кодом. Для получения информации о Docker Hub, который предлагает размещенный реестр с дополнительными функциями, такими как группы, организации, веб-перехватчики, автоматические сборки и т.д., см. статью Docker Hub.

Опция использования

Если в вашей среде работает несколько экземпляров Docker, например несколько физических или виртуальных машин, на которых работает Docker, каждый демон выходит в Интернет и извлекает образ, которого у него нет локально, из репозитория Docker. Вы можете запускает локальное зеркало реестра и направить туда всех своих демонов, чтобы избежать лишнего интернет-трафика.

Примечание

Официальные образы Docker являются интеллектуальной собственностью Docker.

Альтернативы

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

Кроме того, если все ваши образы созданы собственными силами, самым простым сценарием будет вообще не использовать Hub и полностью полагаться на локальный реестр.

Попался

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

Примечание

На зеркала Docker Hub по-прежнему распространяется действие Docker политика добросовестного использования.

Решение

Реестр можно настроить как сквозной кэш. В этом режиме реестр отвечает на все обычные запросы на вытягивание докеров, но сохраняет все содержимое локально.

Как это работает?

Когда вы впервые запрашиваете образ из локального зеркала реестра, он извлекает образ из общедоступного реестра Docker и сохраняет его локально, прежде чем возвращает вам. При последующих запросах локальное зеркало реестра может обслуживать образ из собственного хранилища.

Что, если контент изменится в Hub?

При попытке извлечения с помощью тега реестр проверяет удаленное устройство, чтобы убедиться, что на нем установлена последняя версия запрошенного контента. В противном случае он извлекает и кэширует последний контент.

Что насчет моего диска

В средах с высокой скоростью обновления устаревшие данные могут накапливаться в кэше. При работе в качестве кэша извлечения реестр периодически удаляет старое содержимое для экономии места на диске. Последующие запросы на удаленное содержимое вызывают удаленную выборку и локальное повторное кэширование.

Чтобы обеспечить наилучшую производительность и гарантировать корректность, кэш реестра должен быть настроен на использование драйвера filesystem для хранения.

Запускает реестр как сквозной кэш

Самый простой способ запускает реестр как сквозной кэш — запускает официальный образ Реестр. По крайней мере, вам нужно указывает proxy.remoteurl в /etc/docker/registry/config.yml, как приведено в следующем подразделе.

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

Примечание

При использовании Docker Hub все платные подписки Docker ограничены 5000 извлечений в день. Если вам требуется большее количество запросов, вы можете приобрести надстройку Enhanced Service Account. См. Сервисные аккаунты для получения более подробной информации.

Настраивает кеш

Чтобы настроить реестр для работы в качестве сквозного кэша, необходимо добавить в файл конфигурации раздел proxy.

Для доступа к закрытым образам в Docker Hub можно указывает имя пользователя и пароль.

proxy:
  remoteurl: https://registry-1.docker.io
  username: [username]
  password: [password]

Предупреждение

Если вы указываете имя пользователя и пароль, очень важно понимать, что частные ресурсы, к которым у этого пользователя есть доступ в Docker Hub, становятся доступными на вашем зеркале. Вы должны защитить свое зеркало, внедрив аутентификацию, если вы ожидаете, что данные ресурсы останутся конфиденциальными!

Предупреждение

Чтобы планировщик очищал старые записи, delete должен быть включён в конфигурации реестра. См. Конфигурация реестра для получения более подробной информации.

Настраивает демон Docker

Либо передать параметр --registry-mirror при запуске dockerd вручную, либо отредактируйте /etc/docker/daemon.json и добавляет ключ и значение registry-mirrors, чтобы сделать изменение постоянным.

{
  "registry-mirrors": ["https://<my-docker-mirror-host>"]
}

Сохраняет файл и перезагрузите Docker, чтобы изменения вступили в силу.

Некоторые сообщения журнала, которые выглядят как ошибки, на самом деле являются информационными сообщениями.

Проверяет поле level, чтобы определить, предупреждает ли сообщение об ошибке или предоставляет информацию. Например, это сообщение журнала является информационным:

time="2017-06-02T15:47:37Z" level=info msg="error statting local store, serving from upstream: unknown blob" go.version=go1.7.4

Он сообщает вам, что файл ещё не существует в локальном кеше и извлекается из восходящего потока.