Настраиваем Docker на использование стороннего реестра

    Команда Simple-Server
    03.06.2026
    10 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Блокировка Docker Hub для пользователей из России

    В период с 30 мая 2024 года по 3 июня 2024 при попытке выполнить команды docker pull/docker push для пользователей с российскими IP-адресами отображалась следующая ошибка:

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

    Использование сторонних реестров

    Одним из самых простых способов является использование сторонних реестров. У многих крупных компаний, например, таких как Google, Amazon, Яндекс присутствуют свои собственные реестры для хранения образов Docker. Также свой реестр присутствует у Simple-Server. В таблице ниже приведен список некоторых общедоступных реестров, которые можно использовать.

    Также на просторах сети интернет можно найти другие общедоступные реестры образов (например, из Китая).

    Обратите внимание что использование сторонних реестров может нести в себе потенциальные риски безопасности!

    Для того чтобы изменить стандартный реестр Docker Hub на сторонний, необходимо выполнить шаги, перечисленные ниже.

    1. При помощи любого текстового редактора открываем на редактирование файл daemon.json.
    • Если Docker установлен в обычном режиме (не rootless-версия) , файл находится в директории /etc/docker. Если файл daemon.json отсутствует, эта же команда его создаст.
    nano /etc/docker/daemon.json
    • Если Docker установлен в режиме rootless , файл находится в директории /.config/docker, расположенной в домашней директории того пользователя, из-под которого производится запуск Docker. Если файл daemon.json отсутствует, эта команда его создаст.
    nano ~/.config/docker/daemon.json

    Добавляем следующий параметр, где https://docker.io — это адрес реестра, который будет использоваться по умолчанию:

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

    Сохраняем изменения и выходим из файла.

    1. Для того чтобы Docker мог использовать новый реестр, необходимо перезапустить демон docker при помощи команды:

    2. Теперь при попытке скачать образ при помощи команды docker pull, демон docker будет использовать не Docker Hub, а ранее заданный реестр, в нашем случае это реестр от Simple-Server с адресом docker.io.

    Также можно явно указать адрес добавленного ранее реестра, чтобы демон docker сразу скачивал образ из заданного реестра. Для этого перед именем образа необходимо указать адрес реестра. Например, скачаем образ alpine из реестра с адресом docker.io:

    docker pull docker.io/alpine

    Если не указывать тег, то по умолчанию всегда будет скачиваться версия с тегом latest. Чтобы скачать необходимую версию, необходимо указать тег после имени образа. Например, скачаем образ с Nginx с тегом 1.25.2:

    docker pull docker.io/nginx:1.25.2

    Настройка для Windows (Docker Desktop)

    1. При помощи любого текстового редактора открываем на редактирование файл daemon.json, который находится по пути:
    C:\Users\<имя_пользователя>\.docker C:\Users\abarkhatov\.docker
    1. В открывшемся файле добавляем параметр registry-mirrors, в значении которого указываем адрес реестра, например:
    { "registry-mirrors" : [ "https://docker.io" ] }

    Где https://docker.io — адрес используемого реестра.

    Сохраняем изменения и выходим из файла. Чтобы изменения были применены, необходимо перезапустить Docker. Для этого на панели задач справа снизу ищем значок Docker, кликаем по нему правой кнопкой мыши и выбираем пункт «Restart»:

    Также добавить реестр можно через графический интерфейс программы Docker Desktop. Для этого запускаем Docker Desktop и в меню слева выбираем раздел Docker Engine. В появившемся окне прописываем следующую конфигурацию:

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

    Где https://docker.io — адрес используемого реестра.

    Для того чтобы применить внесенные изменения, необходимо нажать на кнопку «Apply & restart». Текущая конфигурация будет сохранена, а Docker перезапущен:

    1. После перезапуска Docker можно использовать новый реестр для скачивания образов. Теперь при попытке скачать образ при помощи команды docker pull демон docker будет использовать не Docker Hub, а ранее заданный реестр, в нашем случае это реестр от Simple-Server с адресом docker.io.

    Также можно явно указать адрес добавленного ранее реестра, чтобы демон docker сразу скачивал образ из заданного реестра. Для этого перед именем образа необходимо указать адрес реестра. Например, скачаем образ curl из реестра с адресом docker.io:

    docker pull docker.io/curlimages/curl

    Если не указывать тег, то по умолчанию всегда будет скачиваться версия с тегом latest. Чтобы скачать нужную версию, необходимо указать тег после имени образа. Например, скачаем образ с node с тегом 21-alpine:

    docker pull docker.io/node:21-alpine

    Также стоит обратить внимание, что скачанные образы всегда будут иметь префикс в виде адреса репозитория, с которого были скачаны образы:

    Использование Nexus в качестве реестра образов

    Также организовать хранение образов можно, используя стороннее программное обеспечение, например Nexus. Процесс установки и настройки Nexus описан в отдельной статье.

    В Nexus присутствует специальный тип репозитория — proxy (прокси-репозиторий), суть которого заключается в том, что при выполнении команды docker pull, Nexus сначала обращается к удаленному репозиторию, например, к Docker Hub или любому другому, далее скачивает образ на клиентское устройство, параллельно сохраняя его в Nexus-репозитории, тем самым работая как кэширующий репозиторий для хранения Docker-образов. При последующем обращении, т.е. при выполнении команды docker pull, Nexus уже будет обращаться в свое собственное хранилище, а не в удаленный репозиторий при условии, что запрашиваемый образ уже присутствует в хранилище Nexus. Данный тип репозитория идеально подходит для тех случаев, когда внешний удаленный репозиторий недоступен, а скачать образ необходимо.

    Для создания прокси-репозитория в Nexus необходимо выполнить следующие шаги:

    1. Авторизуйтесь в веб-интерфейсе Nexus при помощи учётной записи администратора или обычной учётной записи у которой есть права на создание репозиториев.

    2. После авторизации перейдите в режим «Server administration and configuration».

    Далее на панели слева выберите раздел «Repositories».

    И в открывшемся окне нажмите на кнопку «Create repository»:

    В появившемся разделе выберите тип репозитория docker (proxy).

    1. Необходимо заполнить следующие поля:
    • Name — задайте уникальное имя для репозитория.
    • Online — убедитесь, что напротив этого параметра стоит чекбокс. Если чекбокса нет, то репозиторий не сможет принимать входящие запросы, соответственно скачивать образы не получится.

    По умолчанию в Nexus все репозитории для Docker идентифицируются по HTTP/HTTPS-портам, а не по их уникальным именам. Если ваш реестр Nexus находится за прокси-сервером (в качестве прокси сервера может выступать Nginx), то использовать порты вам не надо, т.к. в данном случае для аутентификации в репозитории и одновременно его адресом будет выступать доменное имя. Пример конфигурации Nginx для использования с Docker-репозиториями можно найти в официальной документации. Если же прокси-сервер у вас не используется, то вам необходимо задать уникальный (свободный) порт для HTTP или HTTPS.

    • Allow anonymous docker pull — если проставлен чекбокс, то проходить аутентификацию (выполнять команду docker login) не надо. Если чекбокс не проставлен, то перед выполнением команды docker pull предварительно необходимо выполнить команду docker login:

    • Remote storage — необходимо указать адрес до удаленного репозитория, который находится за прокси-сервером. Это может быть адрес реестра от Google, Amazon или любой другой. Можно использовать предложенный вариант, а именно адрес от реестра Docker Hub — https://registry-1.docker.io:

    • Docker index — необходимо выбрать один из трех предложенных вариантов индексации для Docker-репозитория:

    Остальные настройки можно оставить по умолчанию.

    1. После того как репозиторий создан, необходимо залогиниться в созданный реестр на сервере при условии, что во время создания репозитория был проставлен чекбокс для аутентификации. Для аутентификации используется команда:
    docker login <адрес_репозитория>

    Также необходимо ввести логин и пароль от учётной записи:

    Если же аутентификация не используется, то можно приступать к использованию прокси-репозитория. Для того чтобы скачать Docker-образ на сервер, необходимо выполнить команду docker pull, указав адрес реестра и, через символ / (слеш), имя и тег необходимого образа.

    Формат команды следующий:

    docker pull <адрес_реестра_nexus>/имя_образа:тег

    Например, скачаем образ python с тегом 3.8.19-alpine из реестра nexus-repo.com при помощи команды:

    docker pull nexus-repo.com/python:3.8.19-alpine

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

    Далее возвращаемся в веб-интерфейс Nexus, переходим в раздел «Browse» (значок куба расположенный слева сверху), выбираем созданный репозиторий Docker и видим, что ранее запрашиваемый образ был сохранен в Docker-репозитории с типом proxy:

    Как можно увидеть на скриншоте выше, ранее скачанный образ python с тегом 3.8.19-alpine был сохранен в Nexus. **
    **


    Нужен сервер для практики? Закажите VPS на Simple-Server — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация? Посмотрите все доступные тарифы

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны