Sök…


Introduktion

Ett privat och säkert dockningsregister i stället för en Docker Hub. Grundläggande docker-färdigheter krävs.

parametrar

Kommando Förklaring
sudo docker run -p 5000: 5000 Starta en dockningsbehållare och binda porten 5000 från behållaren till den fysiska maskinens port 5000.
- namnregistret Behållarnamn (använd för att förbättra läsbarheten ”docker ps”).
-v 'pwd' / certs: / certs Bind CURRENT_DIR / certs av den fysiska maskinen på / certs i behållaren (som en "delad mapp").
-e REGISTRY_HTTP_TLS_CERTIFICATE = / certs / server.crt Vi anger att registret ska använda filen /certs/server.crt för att starta. (env-variabel)
-e REGISTRY_HTTP_TLS_KEY = / certs / server.key Samma för RSA-nyckeln (server.key).
-v / root / images: / var / lib / registry / Om du vill spara alla dina registerbilder ska du göra det på den fysiska maskinen. Här sparar vi alla bilder på / root / bilder på den fysiska maskinen. Om du gör detta kan du stoppa och starta om registret utan att tappa några bilder.
registret: 2 Vi anger att vi vill dra registerbilden från dockningshub (eller lokalt), och vi lägger till «2» eftersom vi vill installera version 2 av registret.

Anmärkningar

Hur man installerar en dockningsmotor (kallas klient i den här självstudien)

Hur man genererar SSL-självsignerat certifikat

Generera certifikat

Generera en RSA- openssl genrsa -des3 -out server.key 4096 : openssl genrsa -des3 -out server.key 4096

Openssl bör be om en passfras i detta steg. Lägg märke till att vi endast använder certifikat för kommunikation och autentisering utan lösenfras. Använd bara 123456 till exempel.

Generera certifikatsigneringsbegäran: openssl req -new -key server.key -out server.csr

Det här steget är viktigt eftersom du blir ombedd att få information om certifikat. Den viktigaste informationen är ”Common Name”, som är domännamnet, som används för kommunikation mellan privata dockningsregister och alla andra maskiner. Exempel: mydomain.com

Ta bort passfras från RSA-privata nyckel: cp server.key server.key.org && openssl rsa -in server.key.org -out server.key

Som sagt sa vi kommer att fokusera på certifikat utan lösenfras. Så var försiktig med alla dina nyckels filer (.nyckel, .csr, .crt) och förvara dem på en säker plats.

Generera det openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt certifikatet: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Du har nu två viktiga filer, server.key och server.crt , som är nödvändiga för den privata registerautentiseringen.

Kör registret med självsignerat certifikat

För att köra det privata registret (säkert) måste du generera ett självsignerat certifikat, du kan hänvisa till tidigare exempel för att generera det.

Som exempel sätter jag server.key och server.crt i / root / certs

Innan du kör docker-kommando ska du placeras (använd cd ) i katalogen som innehåller mappen Certs . Om du inte är det och du försöker köra kommandot får du ett fel som

level = fatal msg = "open /certs/server.crt: ingen sådan fil eller katalog"

När du är ( cd /root i mitt exempel) kan du i princip starta det säkra / privata registret med: 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
Förklaringar om kommandot finns på Parameterns del.

Dra eller tryck från en dockarklient

När du kör ett fungerande register kan du dra eller trycka på bilder på det. För det behöver du filen server.crt i en speciell mapp på din dockarklient. Certifikatet låter dig autentisera med registret och sedan kryptera kommunikation.

Kopiera server.crt från registermaskinen till /etc/docker/certs.d/mydomain.com:5000/ på din klientmaskin. Och sedan byta namn på den till ca-certifikat.crt : mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt

Just nu kan du dra eller skjuta bilder från ditt privata register:
PULL: docker pull mydomain.com:5000/nginx eller
SKJUTA PÅ :

  1. Skaffa en officiell bild från hub.docker.com: docker pull nginx
  2. Tagga den här bilden innan du trycker in i det privata registret: docker tag IMAGE_ID mydomain.com:5000/nginx (använd docker images att få IMAGE_ID)
  3. Tryck bilden till registret: docker push mydomain.com:5000/nginx


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow