Jak postawić Docker Registry na Saplo (prywatny rejestr obrazów bez limitów Docker Hub)

Własny prywatny rejestr obrazów Docker pod Twoją domeną, z przeglądarkowym UI do repozytoriów, tagów i warstw, bez konta na Docker Hub i bez limitów pull rate. Instrukcja krok po kroku, jak postawić Docker Registry na Saplo.

Grzegorz Kalmus· ·18 wyświetleń

Docker Hub w darmowym planie daje jedno prywatne repozytorium i limity na pobieranie obrazów, a każdy kolejny obraz albo wyższy limit pull rate to już płatny plan Pro lub Team, liczony od użytkownika miesięcznie. Docker Registry na Saplo to Twój własny, prywatny magazyn zbudowanych obrazów Docker pod Twoją domeną, z prostym interfejsem w przeglądarce do przeglądania repozytoriów, tagów i warstw, bez limitu repozytoriów i bez limitu pobierań. Poniżej krok po kroku, jak postawić Docker Registry na Saplo.

Dlaczego własny rejestr zamiast Docker Hub

Docker Hub jest wygodny na start, ale ma dwie słabe strony, które własny rejestr usuwa:

  • darmowy plan Docker Hub daje tylko jedno prywatne repozytorium, każdy kolejny prywatny obraz wymaga płatnego planu Pro (jednorazowo od około 5 USD miesięcznie) albo Team (od około 9 USD miesięcznie za użytkownika), jeśli w projekcie pracuje więcej osób,
  • limity pull rate ograniczają, ile razy dziennie pipeline CI/CD albo serwer produkcyjny może ściągnąć obraz, co przy częstych deployach i wielu instancjach tej samej aplikacji potrafi realnie zablokować wdrożenie w najgorszym momencie,
  • obrazy zbudowane w firmowym CI/CD trzymane w cudzej chmurze publicznej to dane poza Twoją kontrolą, nawet jeśli repozytorium jest oznaczone jako prywatne.

Docker Registry na Saplo to oficjalny obraz registry:2 (Docker Distribution) razem z przeglądarkowym UI, oba w jednym kontenerze Docker na Twoim Boxie. Repozytoriów i pobierań nie liczy nikt, a koszt całości to koszt samego Boxa, niezależnie od tego, ile obrazów i ile razy dziennie ściąga je Twój pipeline.

Wymagania

Żeby postawić Docker Registry na Saplo, potrzebujesz:

  • Boxa z uruchomionym Dockerem (silnik włącza go automatycznie przy instalacji z katalogu, wymagany jest nesting w kontenerze, co Saplo ma domyślnie),
  • minimum 512 MB RAM wolnego na Boxie i 10 GB miejsca na dysku pod obrazy, czyli najtańszy plan, który to udźwignie, to Box S za 119 zł rocznie,
  • domeny albo subdomeny *.saploapp.pl w cenie każdego planu, pod którą stanie rejestr i UI,
  • osobnej bazy danych NIE potrzebujesz, rejestr trzyma zbudowane obrazy w wolumenie danych aplikacji, a nie w bazie SQL.

Pełny opis aplikacji i jej miejsce w katalogu znajdziesz na stronie Docker Registry na Saplo.

Instalacja krok po kroku

  1. W panelu Saplo wejdź w Katalog aplikacji i wybierz Docker Registry.
  2. Wskaż Box z minimum 512 MB wolnego RAM i 10 GB wolnego dysku oraz domenę albo subdomenę, pod którą stanie rejestr.
  3. Zatwierdź instalację. Silnik generuje losowe hasło administratora, zapisuje je jako hasz bcrypt (jedyny format, jaki obsługuje rejestr Dockera w trybie autoryzacji htpasswd), stawia dwa kontenery, registry z oficjalnego obrazu registry:2 i registry-ui z obrazu joxit/docker-registry-ui, i czeka, aż UI faktycznie odpowie po HTTP, zanim uzna instalację za zakończoną.
  4. UI działa jako reverse proxy do API rejestru pod tym samym portem i domeną, więc docker login, docker push i docker pull działają wprost pod adresem aplikacji, bez dodatkowych portów i bez konfiguracji CORS.
  5. Dane logowania administratora (login, hasło) trafiają do pliku DOCKER-REGISTRY-SETUP.txt w katalogu aplikacji.

Pierwsze użycie

  1. Odczytaj login i hasło z pliku DOCKER-REGISTRY-SETUP.txt w katalogu aplikacji (login domyślnie admin, hasło wygenerowane losowo przy instalacji).
  2. Zaloguj się z lokalnego Dockera poleceniem docker login twoja-domena.saploapp.pl i podaj login z hasłem z pliku.
  3. Otaguj obraz pod adresem rejestru, na przykład docker tag moj-obraz:latest twoja-domena.saploapp.pl/moj-obraz:latest, i wypchnij go poleceniem docker push.
  4. Wejdź pod adres domeny w przeglądarce, zaloguj się tym samym loginem i hasłem i przeglądaj repozytoria, tagi i warstwy w UI joxit/docker-registry-ui.
  5. Na serwerze produkcyjnym albo w pipeline CI/CD ściągnij obraz poleceniem docker pull twoja-domena.saploapp.pl/moj-obraz:latest, po zalogowaniu tym samym kontem.

Docker Registry na Saplo kontra Docker Hub

Docker Hub Free Docker Hub Pro/Team Docker Registry na Saplo
Limit prywatnych repozytoriów jedno bez limitu bez limitu
Limit pull rate tak, dla anonimowych i darmowych kont wyższy, ale wciąż liczony brak
Gdzie leżą obrazy na serwerach Docker Inc na serwerach Docker Inc na Twoim Boxie
Koszt 0 USD, ale z limitami od około 5 USD miesięcznie za użytkownika koszt samego Boxa (od 119 zł rocznie)

Najczęstsze pytania

Czy trzeba zakładać konto w Docker Hub albo innym rejestrze publicznym? Nie, Docker Registry na Saplo działa całkowicie samodzielnie, logowanie do docker login idzie na login i hasło wygenerowane przy instalacji, bez konta u zewnętrznego dostawcy.

Czy jest limit liczby obrazów albo pobierań? Nie, jedyne ograniczenie to miejsce na dysku Boxa, które wykupujesz w planie.

Czy da się zmienić hasło administratora? Tak, nowy hasz bcrypt generujesz jednorazowym kontenerem httpd:2.4-alpine (docker run --rm httpd:2.4-alpine htpasswd -Bbn użytkownik haslo), podmieniasz plik htpasswd w katalogu aplikacji i restartujesz kontener registry.

Czy rejestr wymaga osobnej bazy danych? Nie, obrazy i ich metadane trzymane są w wolumenie danych kontenera registry, bez potrzeby osobnej bazy MySQL czy Postgresa.

Czy da się kasować stare obrazy i tagi? Tak, usuwanie obrazów jest włączone (REGISTRY_STORAGE_DELETE_ENABLED) i dostępne wprost z UI w przeglądarce, bez wchodzenia po SSH.

Jeśli dziś płacisz za Docker Hub Pro albo Team tylko po to, żeby mieć więcej niż jedno prywatne repozytorium, napisz do nas, pomożemy postawić własny rejestr.