Больше не ждем! Как public-image-mirror ускоряет загрузку Docker-образов и Kubernetes-компонентов

02 Jun, 2026

Знакомая ситуация? Вы запускаете docker pull или разворачиваете очередной кластер Kubernetes, а образы тянутся так медленно, что можно успеть выпить кофе, а то и два. Особенно, если речь идет о зарубежных репозиториях вроде GCR или Quay.io. В такие моменты хочется найти волшебную палочку, которая ускорит процесс. И, знаете, я кажется, ее нашел! Сегодня мы поговорим о проекте public-image-mirror от DaoCloud, который может стать вашим личным ускорителем для контейнерных образов.

Что это за зверь и зачем он нужен?

public-image-mirror — это не просто очередной прокси, а полноценный публичный сервис зеркалирования популярных репозиториев контейнерных образов. Его главная цель — решить проблему медленной загрузки образов из-за географической удаленности или сетевых ограничений. Проще говоря, если ваши Docker-образы или компоненты Kubernetes "зависают" при загрузке, этот проект предлагает элегантное и эффективное решение.

Представьте, что вы пытаетесь скачать огромный файл из-за океана. Скорость будет не ахти. А теперь представьте, что этот файл уже лежит на ближайшем к вам сервере. Разница очевидна, верно? public-image-mirror работает по схожему принципу, предоставляя локальные кэшированные копии образов, что значительно сокращает время ожидания.

Как это работает под капотом?

Суть работы public-image-mirror довольно проста и изящна: он выступает в роли зеркала для множества внешних репозиториев. Когда вы запрашиваете образ через этот сервис, он сначала проверяет, есть ли у него уже кэшированная копия. Если есть — вы получаете ее на максимальной скорости. Если нет — сервис "лениво" подтягивает образ из оригинального источника, кэширует его и отдает вам. При этом все хеши (SHA256) остаются идентичными оригинальным, что гарантирует целостность и безопасность образов.

Ключевые особенности, которые делают его таким привлекательным:

Реклама
  • Широкая поддержка репозиториев: Проект поддерживает зеркалирование образов из Docker Hub (docker.io), Google Container Registry (gcr.io), GitHub Container Registry (ghcr.io), Kubernetes Registry (registry.k8s.io), Microsoft Container Registry (mcr.microsoft.com), Quay.io и многих других. Это покрывает львиную долю потребностей большинства разработчиков.
  • Простота использования: Вам не нужно разворачивать свой прокси или сложную инфраструктуру. Достаточно добавить специальный префикс к имени образа или настроить зеркало в конфигурации Docker/Containerd.
  • Актуальность и надежность: Сервис регулярно проверяет и синхронизирует образы с оригинальными источниками. Кэшированные данные хранятся до 90 дней, а манифесты обновляются каждый час, что обеспечивает достаточно высокую актуальность.
  • Открытый исходный код бэкенда: Кстати, сам бэкенд сервиса, ocimirror, тоже открыт, что добавляет прозрачности и доверия к проекту.

Практика: Ускоряем всё, что движется!

Самое интересное — это, конечно, как применить этот инструмент в реальной жизни. И здесь public-image-mirror предлагает несколько очень удобных способов.

Ускоряем Docker-образы

Это, пожалуй, самый частый сценарий. Вместо того чтобы тянуть образ напрямую с docker.io, вы просто добавляете префикс m.daocloud.io/ к имени образа.

Например, вместо:

docker run -d -P docker.io/library/nginx

Вы пишете:

docker run -d -P m.daocloud.io/docker.io/library/nginx

Или, что еще удобнее, можно настроить Docker-демон на использование зеркала по умолчанию. Для этого достаточно добавить несколько строк в файл /etc/docker/daemon.json:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io"
  ]
}

После этого перезапустите Docker-демон, и все ваши docker pull будут автоматически использовать ускоренное зеркало. Красота!

Ускоряем Kubernetes-компоненты

Для тех, кто работает с Kubernetes, public-image-mirror — это просто находка. Медленная загрузка образов для подов или системных компонентов может сильно замедлить развертывание и отладку.

  • При установке kubeadm: Вы можете указать зеркало прямо в конфигурации ClusterConfiguration:

    apiVersion: kubeadm.k8s.io/v1beta3
    kind: ClusterConfiguration
    dns:
      imageRepository: k8s.m.daocloud.io/coredns
    imageRepository: k8s.m.daocloud.io
    # ...
    
  • При создании кластера kind: Аналогично, можно указать образ узла с префиксом зеркала:

    kind create cluster --name kind --image m.daocloud.io/docker.io/kindest/node:v1.22.1
    
  • Автоматическое ускорение всех подов с repimage: Это вообще магия! Проект repimage (который, кстати, тоже упоминается в README) использует Webhook, чтобы автоматически переписывать пути к образам во всех новых подах, заставляя их использовать public-image-mirror. Устанавливается это одной командой:

    kubectl create -f https://files.m.daocloud.io/github.com/wzshiming/repimage/releases/download/latest/repimage.yaml
    kubectl rollout status deployment/repimage -n kube-system
    

    И вуаля! Все ваши поды будут стартовать быстрее без единого изменения в ваших YAML-файлах.

  • Конфигурация Containerd: Если вы используете Containerd в качестве среды выполнения контейнеров, можно настроить зеркала через его конфигурацию, что особенно актуально для кластеров Kubernetes.

Ускоряем Ollama и DeepSeek (экспериментально)

Интересно, что проект не ограничивается только "классическими" контейнерами. В README упоминается экспериментальная поддержка ускорения для Ollama — инструмента для запуска больших языковых моделей локально. Это может быть очень полезно для разработчиков, экспериментирующих с LLM.

Например, для запуска Ollama с ускорением:

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama docker.m.daocloud.io/ollama/ollama

И даже для ускорения загрузки моделей, таких как DeepSeek-R1, если вы запускаете их через Ollama:

docker exec -it ollama ollama run ollama.m.daocloud.io/library/deepseek-r1:1.5b

Это показывает, что проект активно развивается и адаптируется под новые тренды в IT.

Немного о "друзьях" проекта

Кстати, у public-image-mirror есть "брат-близнец" — public-binary-files-mirror, который занимается ускорением загрузки бинарных файлов. Если вы часто сталкиваетесь с медленной загрузкой исполняемых файлов из GitHub Releases или других источников, обязательно загляните и туда. Вместе они образуют отличный дуэт для ускорения вашей разработки.

Стоит ли попробовать? Мой вердикт

Однозначно да! Если вы хоть раз сталкивались с проблемой медленной загрузки контейнерных образов, public-image-mirror — это то, что вам нужно. Это бесплатный, простой в использовании и очень эффективный инструмент, который сэкономит вам часы ожидания и нервов.

Он идеально подойдет:

  • Разработчикам, работающим с Docker и Kubernetes.
  • DevOps-инженерам, отвечающим за развертывание и эксплуатацию.
  • Всем, кто находится в регионах с неоптимальным доступом к международным репозиториям.

Проект активно поддерживается, имеет открытый исходный код и уже зарекомендовал себя как надежное решение. Так что, не откладывайте, попробуйте public-image-mirror в деле и почувствуйте разницу! Ваше время — ваш самый ценный ресурс, и этот проект поможет его сохранить.