Docker
Registro di sistema privato / sicuro Docker con API v2
Ricerca…
introduzione
Un registro docker privato e sicuro invece di un Docker Hub. Sono richieste le abilità di docker di base.
Parametri
Comando | Spiegazione |
---|---|
sudo docker run -p 5000: 5000 | Avviare un contenitore di finestra mobile e collegare la porta 5000 dal contenitore alla porta 5000 della macchina fisica. |
--nome registro | Nome del contenitore (utilizzare per migliorare la leggibilità di "docker ps"). |
-v 'pwd' / certs: / certs | Collega CURRENT_DIR / certs della macchina fisica su / certs del contenitore (come una "cartella condivisa"). |
-e REGISTRY_HTTP_TLS_CERTIFICATE = / certs / server.crt | Specifichiamo che il registro dovrebbe usare il file /certs/server.crt per iniziare. (variabile env) |
-e REGISTRY_HTTP_TLS_KEY = / certs / server.key | Lo stesso per la chiave RSA (server.key). |
-v / root / images: / var / lib / registry / | Se si desidera salvare tutte le immagini del registro, è necessario farlo sul computer fisico. Qui salviamo tutte le immagini su / root / images sulla macchina fisica. Se si esegue questa operazione, è possibile interrompere e riavviare il registro senza perdere alcuna immagine. |
Registro di sistema: 2 | Specifichiamo che vorremmo estrarre l'immagine del registro dall'hub docker (o localmente), e aggiungiamo «2» perché vogliamo installare la versione 2 del registro. |
Osservazioni
Generazione di certificati
Genera una chiave privata RSA: openssl genrsa -des3 -out server.key 4096
Openssl dovrebbe chiedere una passphrase in questo passaggio. Si noti che verrà utilizzato solo il certificato per la comunicazione e l'autenticazione, senza passphrase. Basta usare 123456 per esempio.
Genera la richiesta di firma del certificato: openssl req -new -key server.key -out server.csr
Questo passaggio è importante perché ti verranno chieste alcune informazioni sui certificati. Le informazioni più importanti sono "Nome comune", ovvero il nome del dominio, che può essere utilizzato per le comunicazioni tra il registro di posta elettronica privato e tutte le altre macchine. Esempio: mydomain.com
Rimuovi la passphrase dalla chiave privata RSA: cp server.key server.key.org && openssl rsa -in server.key.org -out server.key
Come ho detto, ci concentreremo sul certificato senza passaparola. Quindi fai attenzione con tutti i file della tua chiave (.key, .csr, .crt) e conservali in un posto sicuro.
Genera il certificato autofirmato: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Sono ora disponibili due file essenziali, server.key e server.crt , necessari per l'autenticazione del registro privato.
Esegui il registro con un certificato autofirmato
Per eseguire il registro privato (in modo sicuro) è necessario generare un certificato autofirmato, è possibile fare riferimento all'esempio precedente per generarlo.
Per il mio esempio ho messo server.key e server.crt in / root / certs
Prima di eseguire il comando finestra mobile devi essere posizionato (usa cd
) nella directory che contiene la cartella certs . Se non lo sei e provi a eseguire il comando riceverai un errore come
level = fatal msg = "apri /certs/server.crt: nessun file o directory"
Quando sei ( cd /root
nel mio esempio), puoi fondamentalmente avviare il registro sicuro / privato usando: 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
Spiegazioni sul comando sono disponibili sulla parte Parametri.
Tirare o spingere da un client finestra mobile
Quando si ottiene un registro di lavoro in esecuzione, è possibile trascinare o spingere le immagini su di esso. Per questo è necessario il file server.crt in una cartella speciale sul client docker. Il certificato consente di autenticare con il registro e quindi crittografare la comunicazione.
Copia server.crt dalla macchina del registro in /etc/docker/certs.d/mydomain.com:5000/ sul computer client. Quindi rinominarlo in ca-certificates.crt : mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt
A questo punto puoi tirare o spingere le immagini dal tuo registro privato:
PULL: docker pull mydomain.com:5000/nginx
o
SPINGERE :
- Ottieni un'immagine ufficiale da hub.docker.com: docker
docker pull nginx
- Contrassegna questa immagine prima di passare al registro privato:
docker tag IMAGE_ID mydomain.com:5000/nginx
(usa ledocker images
per ottenere IMAGE_ID) - Spingere l'immagine nel registro:
docker push mydomain.com:5000/nginx