Skip to content

Настройка зеркала Docker Registry

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

Настройка Docker Registry

Для начала, создадим Docker Compose файл, который настроит наше зеркало Docker Registry. Этот файл определяет сервис, который будет использовать официальный образ registry:2.8.3 и настраивает необходимые параметры окружения.

Сохраните этот файл как docker-compose.yml и запустите команду docker-compose up -d, чтобы поднять сервис.

services:
  registry:
    image: registry:2.8.3
    container_name: registry-mirror
    ports:
      - "10.0.1.100:6000:5000"
    restart: always
#    volumes:
#      - ./auth:/auth
    environment:
#      REGISTRY_AUTH: htpasswd
#      REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.password
#      REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm

      REGISTRY_PROXY_REMOTEURL: https://registry-1.docker.io

      REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR: "inmemory"
      REGISTRY_STORAGE_DELETE_ENABLED: true
      REGISTRY_STORAGE_MAINTENANCE_UPLOAD_PURGING_ENABLED: "true"
      REGISTRY_STORAGE_MAINTENANCE_UPLOAD_PURGING_AGE: "168h"
      REGISTRY_STORAGE_MAINTENANCE_UPLOAD_PURGING_INTERVAL: "24h"
      REGISTRY_STORAGE_MAINTENANCE_UPLOAD_PURGING_DRYRUN: "false"
      REGISTRY_STORAGE_REDIRECT_DISABLE: "true"
      REGISTRY_STORAGE: s3
      REGISTRY_STORAGE_S3_ACCESSKEY: ...
      REGISTRY_STORAGE_S3_SECRETKEY: ...
      REGISTRY_STORAGE_S3_REGIONENDPOINT: https://s3-domain.ru
      REGISTRY_STORAGE_S3_BUCKET: registry
      REGISTRY_STORAGE_S3_SECURE: "true"
      REGISTRY_STORAGE_S3_region: "truedev"

Параметры окружения

REGISTRY_PROXY_REMOTEURL: Указывает URL основного Docker Registry, с которого будут кэшироваться образы.
REGISTRY_STORAGE_*: Настройки хранения, в данном случае используется S3 совместимое хранилище.

Настройка клиента Docker

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

"registry-mirrors": ["http://10.0.1.100:6000", "https://mirror.gcr.io"],
"insecure-registries": ["10.0.1.100:6000"],
"log-driver": "json-file",
"log-opts": {
    "max-size": "20m",
    "max-file": "3",
    "compress": "true",
    "labels": "production_status",
    "env": "os"
}

Эти настройки указывают Docker использовать наше зеркало и определяют параметры логирования.

После редактирования файла перезапустите службу Docker командой sudo systemctl restart docker.service

Настройка Podman или Buildah

Если вы используете Podman или Buildah, вам нужно настроить файл /etc/containers/registries.conf. Добавьте следующие строки:

unqualified-search-registries = [
  "docker.io",
  "docker.elastic.co"
]

[[registry]]
prefix = "docker.io"
location = "docker.io"
[[registry.mirror]]
prefix = "docker.io"
location = "0.0.0.0:6000"
insecure = true
Эти настройки указывают Podman или Buildah использовать наше зеркало для docker.io.

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