Docker
Docker privata / säkra register med API v2
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
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Å :
- Skaffa en officiell bild från hub.docker.com:
docker pull nginx
- Tagga den här bilden innan du trycker in i det privata registret:
docker tag IMAGE_ID mydomain.com:5000/nginx
(använddocker images
att få IMAGE_ID) - Tryck bilden till registret:
docker push mydomain.com:5000/nginx