Szukaj…


Wprowadzenie

Prywatny i bezpieczny rejestr dokera zamiast Docker Hub. Wymagane są podstawowe umiejętności dokerów.

Parametry

Komenda Wyjaśnienie
sudo docker run -p 5000: 5000 Uruchom kontener dokowania i powiąż port 5000 z kontenera z portem 5000 maszyny fizycznej.
- rejestr nazw Nazwa kontenera (służy do poprawy czytelności „docker ps”).
-v „pwd” / certs: / certs Powiąż CURRENT_DIR / certs fizycznej maszyny na / certs kontenera (jak „folder współdzielony”).
-e REGISTRY_HTTP_TLS_CERTIFICATE = / certs / server.crt Określamy, że rejestr powinien uruchomić plik /certs/server.crt. (zmienna env)
-e REGISTRY_HTTP_TLS_KEY = / certs / server.key To samo dotyczy klucza RSA (server.key).
-v / root / images: / var / lib / register / Jeśli chcesz zapisać wszystkie obrazy rejestru, powinieneś to zrobić na fizycznym komputerze. Tutaj zapisujemy wszystkie obrazy na / root / images na fizycznej maszynie. Jeśli to zrobisz, możesz zatrzymać i ponownie uruchomić rejestr bez utraty żadnych obrazów.
rejestr: 2 Określamy, że chcielibyśmy pobrać obraz rejestru z centrum dokowania (lub lokalnie) i dodajemy «2», ponieważ chcemy zainstalować wersję 2 rejestru.

Uwagi

Jak zainstalować silnik Dockera (w tym samouczku nazywany klientem)

Jak wygenerować samopodpisany certyfikat SSL

Generowanie certyfikatów

Wygeneruj klucz prywatny RSA: openssl genrsa -des3 -out server.key 4096

Na tym etapie openssl powinien poprosić o hasło. Zauważ, że do komunikacji i uwierzytelnienia wykorzystamy tylko certyfikat, bez hasła. Na przykład użyj 123456.

Wygeneruj żądanie podpisania certyfikatu: openssl req -new -key server.key -out server.csr

Ten krok jest ważny, ponieważ zostaniesz poproszony o podanie informacji o certyfikatach. Najważniejszą informacją jest „Common Name”, czyli nazwa domeny, która służy do komunikacji między prywatnym rejestrem dokerów i wszystkimi innymi komputerami. Przykład: mojadomena.com

Usuń frazę kluczową z klucza prywatnego RSA: cp server.key server.key.org && openssl rsa -in server.key.org -out server.key

Tak jak powiedziałem, skupimy się na certyfikacie bez hasła. Uważaj więc na wszystkie pliki kluczy (.key, .csr, .crt) i przechowuj je w bezpiecznym miejscu.

Wygeneruj samopodpisany certyfikat: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Masz teraz dwa niezbędne pliki, server.key i server.crt , które są niezbędne do uwierzytelnienia rejestru prywatnego.

Uruchom rejestr z certyfikatem z podpisem własnym

Aby uruchomić prywatny rejestr (bezpiecznie), musisz wygenerować samopodpisany certyfikat, możesz odwołać się do poprzedniego przykładu, aby go wygenerować.

W moim przykładzie umieściłem server.key i server.crt w / root / certs

Przed uruchomieniem polecenia dokera powinieneś zostać umieszczony (użyj cd ) w katalogu zawierającym folder certs . Jeśli nie jesteś i spróbujesz uruchomić polecenie, pojawi się błąd typu

level = fatal msg = "open /certs/server.crt: brak takiego pliku lub katalogu"

Gdy jesteś ( cd /root w moim przykładzie), możesz w zasadzie uruchomić bezpieczny / prywatny rejestr, używając: sudo docker run -p 5000:5000 --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt -e REGISTRY_HTTP_TLS_KEY=/certs/server.key -v /root/Documents:/var/lib/registry/ registry:2
Objaśnienia dotyczące polecenia są dostępne w części Parametry.

Ciągnij lub pchaj od klienta dokera

Po uruchomieniu działającego rejestru można na nim pobierać lub wypychać obrazy. W tym celu potrzebujesz pliku server.crt do specjalnego folderu na kliencie dokera. Certyfikat umożliwia uwierzytelnianie w rejestrze, a następnie szyfrowanie komunikacji.

Skopiuj server.crt z komputera rejestru do /etc/docker/certs.d/mydomain.com:5000/ na komputerze klienta. A następnie zmień nazwę na ca-certyfikaty.crt : mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt

W tym momencie możesz pobierać lub pchać obrazy z prywatnego rejestru:
PULL: docker pull mydomain.com:5000/nginx or
PCHAĆ :

  1. Pobierz oficjalny obraz z hub.docker.com: docker docker pull nginx
  2. Oznacz to zdjęcie przed wypchnięciem do prywatnego rejestru: docker tag IMAGE_ID mydomain.com:5000/nginx (użyj docker images dokera, aby uzyskać IMAGE_ID)
  3. Wciśnij obraz do rejestru: docker push mydomain.com:5000/nginx


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow