Сучасні застосунки часто використовують контейнери Docker, а образи для них беруться з хмарних реєстрів, таких як Docker Hub, або інших публічних джерел. Однак залежність від зовнішніх сервісів може призвести до збоїв через недоступність реєстру. Для організації локального сховища (registry) для Docker-образів можна використовувати локальний Docker Registry.

1. Запуск локального Docker Registry

Docker надає офіційний образ registry для створення локального реєстру.

docker run -d -p 5000:5000 --name registry registry:2
  • -d — запускає контейнер у фоновому режимі.
  • -p 5000:5000 — проброс порту 5000 (за замовчуванням для registry).
  • –name registry — ім’я контейнера.
  • registry:2 — офіційний образ Docker Registry.

Тепер локальний реєстр доступний за адресою localhost:5000.

2. Налаштування сховища

За замовчуванням образи зберігаються в пам’яті контейнера. Для постійного зберігання додайте том (volume):

docker run -d -p 5000:5000 --name registry -v registry-data:/var/lib/registry registry:2

-v registry-data:/var/lib/registry — монтує том registry-data для зберігання образів.

3. Робота з локальним реєстром

Тегування образу:

  1. Щоб відправити образ у локальний реєстр, потрібно позначити його тегом із префіксом localhost:5000/.
    docker tag my-image:latest localhost:5000/my-image:latest
  2. Відправлення образу в реєстр:
    docker push localhost:5000/my-image:latest
  3. Отримання образу з реєстру:

    docker pull localhost:5000/my-image:latest

4. Налаштування Docker для роботи з локальним реєстром

Якщо ви використовуєте HTTPS або працюєте на віддаленій машині, переконайтесь, що Docker налаштований для роботи з небезпечними реєстрами (insecure registries).
Додайте до файлу /etc/docker/daemon.json:

{

  "insecure-registries": ["localhost:5000"]

}

Перезапустіть Docker:

sudo systemctl restart docker

5. Додаткові налаштування (опціонально)

Автентифікація: Для захисту реєстру налаштуйте HTTP-автентифікацію за допомогою htpasswd:

docker run -d -p 5000:5000 --name registry \
  -v $(pwd)/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" registry:2

Створіть файл htpasswd за допомогою команди:

htpasswd -Bc auth/htpasswd <username>

TLS: Для продакшн-середовища налаштуйте TLS-сертифікати, щоб забезпечити безпечне з’єднання.

6. Перевірка вмісту реєстру

Для перегляду доступних образів скористайтеся API реєстру:

curl http://localhost:5000/v2/_catalog

Висновок

Залежність від хмарних реєстрів і публічних Docker-образів може стати слабким місцем для сервісу. Але правильні стратегії — локальний реєстр, кешування, власні образи та відмовостійкість — допомагають мінімізувати ризики.
Налаштування локального дзеркала та використання приватних реєстрів дають контроль над інфраструктурою, а моніторинг і автоматизація забезпечують стабільність. Ці кроки допоможуть уникнути зупинки сервісу навіть у разі проблем із зовнішніми ресурсами.