Docker Swarm e self-signed Docker Registry

Docker Swarm support l'utilizzo del registro Docker con certificato auto-firmato?

Ho creato il mio cluster basato sul passo dalla documentazione ufficiale di Docker, utilizza i master / nodes dello swarm che eseguono all'interno dei contenitori.

Funziona bene, ma non appena cerco di accedere al mio Registro Docker, riceverò un messaggio di errore:

$ docker -H :4000 login https://...:443 ... Error response from daemon: Get https://.../v1/users/: x509: certificate signed by unknown authority 

C'è un'altra opzione che deve essere impostata, come --insecure-registry ? O devo in qualche modo aggiornare il contenitore Docker Swarm?

È necessario aggiungere il proprio autoscatto o CA personale all'elenco dei certificati attendibili sull'host. Per qualche motivo, il docker non utilizza i certificati sul demone per questa authentication. Ecco i comandi di un host debian:

 sudo mkdir -p /usr/local/share/ca-certificates sudo cp ca.pem /usr/local/share/ca-certificates/ca-local.crt sudo update-ca-certificates sudo systemctl restart docker 

Il riavvio del docker alla fine è richiesto per il demone per ricaricare i certificati OS.

Come ha visto luka5z nell'ultima documentazione , puoi anche aggiungere i cert direttamente a ciascun motore /etc/docker/certs.d/myregistrydomain.com:5000/ca.crt copiando il certificato su /etc/docker/certs.d/myregistrydomain.com:5000/ca.crt . Ciò evita di fidarsi della CA autenticata sull'integer sistema operativo.

C'è un modo per aggiornarlo con i certificati richiesti?

Docker 17.06 porterà il command docker swarm ca ( PR 48 ).
docker swarm ca --rotate significa che un docker swarm ca --rotate sarà sufficiente.

 [email protected]:~# docker swarm ca --help Usage: docker swarm ca [OPTIONS] Manage root CA Options: --ca-cert pem-file Path to the PEM-formatted root CA certificate to use for the new cluster --ca-key pem-file Path to the PEM-formatted root CA key to use for the new cluster --cert-expiry duration Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s) -d, --detach Exit immediately instead of waiting for the root rotation to converge --external-ca external-ca Specifications of one or more certificate signing endpoints --help Print usage -q, --quiet Suppress progress output --rotate Rotate the swarm CA - if no certificate or key are provided, new ones will be generated 

Ecco una demo .

Ho anche incontrato il tuo problema.

Non sono stato in grado di identificare la causa principale di questo, o ciò che imposta questa limitazione.

Ma ho risolto una soluzione:

se è insicuro assicurarsi di avviare ciascun demone docker di conseguenza su each host.

è ansible trovare informazioni su come modificare le opzioni daemon: https://docs.docker.com/engine/admin/systemd/

ad esempio: dal mio conf. --insecure-registry <private registry> dopo che:

 systemctl daemon-reload systemctl restart docker docker login <private registry> 

su each host docker e tirare le immagini necessarie.

dopo di che hai tutte le immagini e non cercherà di tirarle più.

so che questa non è la soluzione migliore 🙁

PS: ho anche dovuto aggiungere questi parametri a ciascun demone docker:

 --cluster-advertise=<host:ip> --cluster-store=consul://<consul ip:consul port> 

senza questi non potrei gestire contenitori su diversi host. Erano tutti in esecuzione su un ospite scelto in modo random.