Docker
Docker prywatny / bezpieczny rejestr z API v2
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
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Ć :
- Pobierz oficjalny obraz z hub.docker.com: docker
docker pull nginx
- Oznacz to zdjęcie przed wypchnięciem do prywatnego rejestru:
docker tag IMAGE_ID mydomain.com:5000/nginx
(użyjdocker images
dokera, aby uzyskać IMAGE_ID) - Wciśnij obraz do rejestru:
docker push mydomain.com:5000/nginx