GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come configurare il registro privato Docker su CentOS 7 / Ubuntu 16.04 / Fedora 26/25

Il registro Docker è un'applicazione che ti consente di archiviare e distribuire le immagini Docker internamente (all'interno della tua organizzazione). Docker ha anche un registro pubblico, noto come Docker Hub, gratuito per archiviare le immagini Docker.

Ma il problema con il registro pubblico Docker è che le immagini che carichi su di esso diventano pubbliche. Questo non è ciò che tu o la tua organizzazione vi aspettate quando avete lavorato per lunghe ore per creare un'immagine e questo diventa pubblico.

Per superare questo ostacolo, puoi configurare un registro Docker per il tuo progetto in privato in modo che solo tu o la tua organizzazione possiate archiviare le immagini Docker su di esso e distribuirle tra i vostri colleghi.

Qui, in questa guida tecnica, discuteremo su come configurare Docker Private Registry su CentOS 7 / Ubuntu 16.04 / Fedora 26/25 .

Infrastrutture

HostName Indirizzo IP Sistema operativo Scopo
registry.itzgeek.local 192.168.12.10 CentOS 7 Funziona come server di registro privato Docker
build.itzgeek.local 192.168.12.20 Ubuntu 16.04 Funziona come nodo del motore Docker in cui gli sviluppatori creeranno le immagini Docker con dockerfile o docker compose, quindi caricheranno tali immagini sul server del registro privato della finestra mobile sopra.
deploy.itzgeek.local 192.168.12.30 Fedora 26/25 Funziona come nodo del motore Docker in cui distribuiamo i container scaricati (pull) dal server del registro privato.
Qui, sto usando un ambiente misto (OS) per dimostrare. Ti consiglio di utilizzare solo un ambiente omogeneo che è facile per la risoluzione dei problemi che si presentano.

Prerequisiti

Installa il motore Docker su tutti i tuoi nodi e assicurati che il servizio Docker sia attivo e funzionante.

LEGGI :Come installare Docker CE su CentOS 7
LEGGI :Come installare Docker CE su Ubuntu 16.04
LEGGI :Come installare Docker CE su Fedora 26/25

Imposta registro privato Docker

Accedi al nodo del registro ed esegui il pull dell'immagine del registro da Docker Hub.

[root@registry ~]# docker pull registry

Scegli se vuoi utilizzare un registro Docker semplice o protetto.

Registro Docker semplice

[root@registry ~]# docker run -dit -p 5000:5000 --name registry registry

Registro privato Docker sicuro

Per impostazione predefinita, il nodo Docker utilizza una connessione protetta su TLS per caricare o scaricare immagini da o verso il registro privato. Puoi utilizzare certificati TLS firmati da CA o autofirmati sul server del Registro di sistema.

Qui userò un certificato autofirmato per proteggere il registro Docker. Creiamo un certificato autofirmato usando il comando seguente.

[root@registry ~]# mkdir -p /certs

[root@registry ~]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/ca.key -x509 -days 365 -out /certs/ca.crt

Generating a 4096 bit RSA private key
............................................++
.....................................................................................................++
writing new private key to '/certs/ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:TN
Locality Name (eg, city) [Default City]:CHN
Organization Name (eg, company) [Default Company Ltd]:ITzGeek
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:registry.itzgeek.local
Email Address []:[email protected]

Sostituisci "registry.itzgeek.local ” con l'FQDN del tuo server di registro.

Certificato generato "ca.crt" deve essere posizionato su tutti i tuoi nodi build/deploy per considerare attendibile questo certificato.

Avvia il contenitore del registro Docker con le informazioni sul certificato.

[root@registry ~]# docker run -d -p 5000:5000 --restart=always --name registry -v /certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/ca.crt -e REGISTRY_HTTP_TLS_KEY=/certs/ca.key registry

Ora hai un contenitore del server del registro denominato "registro ” in esecuzione su “registry.itzgeek.local “.

[root@registry ~]# docker ps

Risultato:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
8641fbc895f5        registry            "/entrypoint.sh /e..."   44 seconds ago      Up 41 seconds       0.0.0.0:5000->5000/tcp   registry

Firewall

Dovresti aprire le seguenti porte sul firewall affinché il registro Docker sia disponibile all'esterno della rete (su build.itzgeek.local /deploy.itzgeek.local )

Devi eseguire il seguente comando sul server Docker Registry (registry.itzgeek.local), dipende dal tuo sistema operativo.

Se il tuo registro Docker è su CentOS 7 / Fedora 26/25,

[root@registry ~]# firewall-cmd --permanent --add-port=5000/tcp
[root@registry ~]# firewall-cmd --reload

Se il tuo registro Docker è su Ubuntu 16.04,

root@registry:~# ufw status
root@registry:~# ufw allow 5000/tcp
root@registry:~# ufw reload ufw enable

Ora il registro Docker è pronto per la distribuzione di immagini Docker.

Crea e carica un'immagine Docker su un server del registro privato

Accedi al tuo nodo del motore Docker di compilazione, ad es. “build.itzgeek.local

Crea un'immagine Docker

Creiamo un'immagine Docker (per container docker personalizzato) per caricarla nel server del registro privato. In tre modi puoi costruire/creare un contenitore di immagini.

1. Impegnati
2. File Docker
3. Docker Componi.

Crea e mantieni la tua immagine Docker pronta per il caricamento seguendo uno dei metodi sopra elencati.

LEGGI :Come creare immagini Docker con Docker Commit
LEGGI :Come creare immagini Docker con DockerFile

Ho creato un'immagine della finestra mobile chiamata "mycentos:httpdv1.0 ” su “build.itzgeek.local ” e ora lo caricheremo sul server del registro privato.

root@build:~# docker images

Risultato:

Ora, rinomina l'immagine della finestra mobile in qualcosa come registryserver:portnumber/image name:tag .

Se il nome dell'immagine non corrisponde al formato specificato, il comando push o pull della finestra mobile tenterà di caricare o scaricare l'immagine dal registro pubblico, non dal registro privato.

Per rinominare l'immagine della finestra mobile, usa il docker tag comando.

root@build:~# docker tag mycentos:httpdv1.0 registry.itzgeek.local:5000/mycentos:httpdv1.0

Controlla di nuovo l'elenco delle immagini Docker.

Carica un'immagine Docker

Dipende dalla modalità di comunicazione (Sicura o non protetta ) di Docker Registry, segui uno dei metodi seguenti.

Non sicuro (registro HTTP semplice)

Modifica/Crea il file “daemon.json ” in “/etc/docker/ ” directory.

root@build:~# vi /etc/docker/daemon.json

Aggiungi i seguenti contenuti al suo interno.

{
  "insecure-registries" : ["registry.itzgeek.local:5000"]
}

Sicuro (autofirmato)

Copia il certificato “ca.crt ” dal server di registro “registry.itzgeek.local ” a “/etc/docker/certs.d/registry.itzgeek.local:5000/ca.crt ” su “build.itzgeek.local “.

root@build:~# mkdir -p /etc/docker/certs.d/registry.itzgeek.local:5000/

root@build:~# scp -pr [email protected]:/certs/ca.crt /etc/docker/certs.d/registry.itzgeek.local:5000/

In entrambi i casi, dovrai riavviare il servizio del motore Docker.

root@build:~# systemctl restart docker

Carica l'immagine della finestra mobile sul server del registro privato utilizzando il comando seguente.

root@build:~# docker push registry.itzgeek.local:5000/mycentos:httpdv1.0

Scarica e distribuisci l'immagine del contenitore Docker dal server del registro privato

Accedi al tuo nodo del motore di distribuzione Docker, ad es. "deploy.itzgeek.local “.

Dipende dalla modalità di comunicazione (sicura o non protetta) di Docker Registry, segui uno dei metodi seguenti.

Non sicuro (registro HTTP semplice)

Modifica/Crea il file “daemon.json ” in “/etc/docker/ ” directory.

[root@deploy ~]# vi /etc/docker/daemon.json

Aggiungi i seguenti contenuti al suo interno.

{
  "insecure-registries" : ["registry.itzgeek.local:5000"]
}

Sicuro (autofirmato)

Copia il certificato “ca.crt ” dal server di registro “registry.itzgeek.local ” a “/etc/docker/certs.d/registry.itzgeek.local:5000/ca.crt ” su “deploy.itzgeek.local “.

[root@deploy ~]# mkdir -p /etc/docker/certs.d/registry.itzgeek.local:5000/

[root@deploy ~]# scp -pr [email protected]:/certs/ca.crt /etc/docker/certs.d/registry.itzgeek.local:5000/

In entrambi i casi, dovrai riavviare il servizio del motore Docker.

[root@deploy ~]# systemctl restart docker

Scarica l'immagine della finestra mobile sul server del registro privato utilizzando il comando seguente.

[root@deploy ~]# docker pull registry.itzgeek.local:5000/mycentos:httpdv1.0

Ora controlla l'elenco delle immagini disponibili utilizzando "immagini della finestra mobile comando ”

[root@deploy ~]# docker images

Risultato:

Ora l'immagine Docker è pronta per la distribuzione.

LEGGI :Come distribuire i container Docker – Interfaccia a riga di comando

Questo è tutto.


Cent OS
  1. Come configurare e utilizzare il registro Docker privato

  2. Come impostare un registro Docker privato su Rocky Linux 8

  3. Come configurare Autofs su CentOS 7 / Ubuntu 16.04 / Debian 9 / Fedora 27/26

  4. Come configurare il server SVN su CentOS, RHEL e Fedora

  5. Come installare la finestra mobile su CentOS / RHEL / Fedora

Come installare e configurare Docker Swarm su CentOS 7 / Ubuntu 16.04 / Fedora 26/25

Come installare Dropbox su Fedora 27 / Fedora 26/25/24

Come installare Docker su CentOS

Come configurare l'origine di Openshift su CentOS 8

Come installare Docker su CentOS 7

Come creare un registro Docker privato su Ubuntu Linux