Автоматическая интеграция с Docker
Подключение локального Docker Engine или Docker Desktop и безопасная отмена изменений.
Одни и те же команды настраивают локальный Docker Engine в Linux или Docker Desktop в macOS:
oci-mirror-proxy dockerd plan
oci-mirror-proxy dockerd apply
oci-mirror-proxy doctor
oci-mirror-proxy dockerd revertКоманды получают адрес прокси и маршруты реестров от работающей службы. Нестандартную службу выбирайте через --admin-socket. Для прокси в контейнере сначала экспортируйте сведения службы и передайте --server-info каждой команде на хосте; см. развёртывание в Docker. Клиентские команды не загружают конфигурацию через --config.
Способ интеграции автоматически определяется активным подключением Docker. Удалённые подключения SSH и TCP отклоняются до изменения локальной конфигурации. Docker Desktop определяется по демону, а не выбранному хранилищу образов. В неизвестной среде возвращается явная ошибка вместо угадывания путей конфигурации.
Развёртывание и активация
На обеих платформах используйте стандартный Compose-файл репозитория и examples/config.docker.yaml. Он публикует реестр на loopback хоста через bridge-сеть. Подключайте целиком доступный для записи каталог конфигурации: процесс без root сохраняет изменения атомарным переименованием. Другие контейнеры в той же сети всё ещё могут обращаться к реестру без аутентификации, поэтому не размещайте в ней недоверенные нагрузки.
В macOS запускайте CLI на хосте от обычного пользователя, без sudo. Команда docker должна находиться в PATH. Интеграция добавляет прокси в ~/.docker/daemon.json, сохраняет другие настройки и зеркала и создаёт резервную копию исходного файла перед записью. Прокси становится первым зеркалом. Настраивается только Docker Hub; другие реестры отмечаются как неподдерживаемые этой интеграцией.
Если для активации требуется перезапуск, обычный apply сохраняет конфигурацию и сообщает об ожидающей активации. Явно разрешите прерывание работы:
oci-mirror-proxy dockerd apply --restartCLI Docker Desktop должен поддерживать docker desktop restart. При сбое активации ошибка различает сохранённую конфигурацию и неудачную активацию. Резервные копии остаются доступны. doctor проверяет и файл конфигурации, и загруженный демоном список зеркал; успешная проверка API сама по себе не доказывает, что загрузка прошла через прокси.
В Linux остаются доступны настройки для конкретного хранилища, параметры rootless и --no-reload. Явные переопределения файлов и хранилища также позволяют создавать конфигурацию без работающего демона; для обычного использования они не нужны. Настройка хоста Linux может требовать повышенных прав.
Восстановление
oci-mirror-proxy dockerd revert --restartИспользуйте --restart только когда он нужен для активации. Отмена удаляет записи выбранного прокси из текущих файлов, сохраняя остальные настройки и последующие правки. Как и для apply, адрес прокси получается от выбранной работающей службы или из снимка --server-info. Резервные копии и старые файлы состояния не определяют поведение.
Резервируются и атомарно заменяются только изменившиеся файлы. Повторный apply/revert не перезаписывает уже корректный файл. Некорректная конфигурация и изменения, внесённые между чтением и записью, отклоняются, а не перезаписываются через --force. Операции блокируют каждый целевой файл; после сбоя удаляйте устаревший .oci-mirror-proxy.lock только убедившись, что операции интеграции не выполняются. Внешние редакторы, игнорирующие блокировку, всё ещё могут создать гонку с финальной заменой. Публикация нескольких файлов не является транзакцией: при ошибке перечисляются уже изменённые файлы и доступные резервные копии.
Отменяйте интеграцию до удаления прокси. Перезапуск Docker может пересоздать внутренние сетевые идентификаторы и журналы; восстановление конфигурации не равно откату снимка диска виртуальной машины.
Проверенная область поддержки
Docker Desktop 4.95.0 с Engine 29.8.2 на Apple Silicon проверен с хранилищем containerd: автоматическая настройка, перезапуск, загрузка образов Docker Hub по обычным именам через контролируемый источник (включая реальный слой), диагностика, повторное применение и восстановление конфигурации (историческое поведение). Это не подтверждает поддержку всех версий Desktop, альтернативных движков macOS, зеркал BuildKit или всех публичных источников. Автоматическое обновление Desktop не выполняется.