Сучасні застосунки часто використовують контейнери 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. Робота з локальним реєстром
Тегування образу:
- Щоб відправити образ у локальний реєстр, потрібно позначити його тегом із префіксом localhost:5000/.
docker tag my-image:latest localhost:5000/my-image:latest - Відправлення образу в реєстр:
docker push localhost:5000/my-image:latest -
Отримання образу з реєстру:
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