GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare il registro Docker privato su Ubuntu 20.04

Per lo sviluppo di CI/CD senza problemi utilizzando la piattaforma Docker, prendere in considerazione l'utilizzo di un server del registro Docker self-hosted. Il registro Docker è il repository in cui è possibile archiviare le immagini della finestra mobile ed estrarle per eseguire le applicazioni sul server. Per una consegna più rapida e un'infrastruttura sicura, si consiglia di configurare il proprio registro privato della finestra mobile per archiviare le immagini della finestra mobile e distribuirle tra le organizzazioni. In questo articolo, impareremo come configurare il registro Docker privato su Ubuntu 20.04

Prerequisiti

  • Account utente con privilegi sudo
  • Un server per il registro Docker
  • Nginx sul server Docker Registry
  • Un server client
  • Docker e Docker-Compose su entrambi i server.

Registro Docker privato

Docker Registry è un'applicazione lato server che consente di archiviare le immagini Docker localmente in un'unica posizione centralizzata. Configurando il tuo server di registro Docker, puoi estrarre e inviare immagini Docker senza doverti connettere all'hub Docker, risparmiando larghezza di banda e prevenendo minacce alla sicurezza.

Leggi anche :Come installare e utilizzare Docker su Ubuntu 20.04 / 20.10

Prima di iniziare

Prima di iniziare, mi assicuro di aver installato Docker e Docker-Compose sia sul server client che sul server del registro locale. Per verificare di aver installato il software richiesto, puoi eseguire i seguenti comandi per verificare la versione del software.

$ docker version

$ docker-compose version

Inoltre, devi assicurarti che il servizio Docker sia avviato e configurato per essere abilitato all'avvio:

$ sudo systemctl start docker
$ sudo systemctl enable docker

Installa e configura il registro Docker privato

Per configurare Private Docker Registry, segui i passaggi:

Crea directory del registro

Configura il tuo server che ospiterà un registro privato. Crea una nuova directory che memorizzerà tutti i file di configurazione richiesti.

Utilizzare il comando seguente per creare una nuova directory di progetto "my-registry" e due sottodirectory "nginx" e "auth". Puoi avere la tua ipotesi per il nome del progetto.

$ mkdir -p my-registry/{nginx, auth}

Ora vai alla directory del progetto e crea nuove directory all'interno di nginx come:

$ cd my-registry/
$ mkdir -p nginx/{conf.d/, ssl}

Crea script e servizi Docker-Compose

Devi creare un nuovo script docker-compose.yml che definisca la versione docker-compose e i servizi richiesti per configurare un registro privato.

Crea un nuovo file "docker-compose.yml" all'interno della directory "my-registry" con l'editor vi.

$ vi docker-compose.yml

Definisci il tuo servizio nel file di composizione mobile come:

services:
#Registry
  registry:
    image: registry:2
    restart: always
    ports:
    - "5000:5000"
    environment:
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry-Realm
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.passwd
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
    volumes:
      - myregistrydata:/data
      - ./auth:/auth
    networks:
      - mynet

#Nginx Service
  nginx:
    image: nginx:alpine
    container_name: nginx
    restart: unless-stopped
    tty: true
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d/:/etc/nginx/conf.d/
      - ./nginx/ssl/:/etc/nginx/ssl/
    networks:
      - mynet

#Docker Networks
networks:
  mynet:
    driver: bridge

#Volumes
volumes:
  myregistrydata:
    driver: local

Salva e chiudi il file

Configurazione di nginx Port forwarding

Dobbiamo creare la configurazione dell'host virtuale nginx per il servizio web nginx. Vai alla directory nginx/conf.d/ creata nel passaggio precedente.

$ cd nginx/conf.d/

Ora crea un file host virtuale nginx con il tuo editor di testo. In questo esempio lo chiamerò myregistry.conf. Puoi avere la tua ipotesi.

$ vi myregistry.conf

Aggiungi i seguenti contenuti:

upstream docker-registry {
    server registry:5000;
}
server {
    listen 80;
    server_name registry.linuxtechi.com;
    return 301 https://registry.linuxtechi.com$request_uri;
}
server {
    listen 443 ssl http2;
    server_name registry.linuxtechi.com;
    ssl_certificate /etc/nginx/ssl/certificate.crt;
    ssl_certificate_key /etc/nginx/ssl/private.key;
    # Log files for Debug
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    location / {
        if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" )  {
            return 404;
        }
        proxy_pass                          http://docker-registry;
        proxy_set_header  Host              $http_host;
        proxy_set_header  X-Real-IP         $remote_addr;
        proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_read_timeout                  900;
    }
}

Sostituisci il tuo nome di dominio con il parametro server_name e salva il file.

Aumenta la dimensione del caricamento del file nginx

Per impostazione predefinita, nginx ha un limite di 1 MB per caricare i file. Poiché le immagini della finestra mobile superano questo limite, è necessario aumentare la dimensione del caricamento nel file di configurazione di nginx. In questo esempio creerò un file di configurazione nginx aggiuntivo con un limite di caricamento di 2 GB .

Vai alla directory di configurazione di nginx

$ cd myregistry/nginx/conf.d
$ vi additional.conf

Aggiungi la riga seguente e salva il file

client_max_body_size 2G;

Configura certificato SSL e autenticazione

Dopo aver creato il file di configurazione di nginx, ora dobbiamo impostare un certificato SSL. Dovresti avere un file di certificato SSL valido con una chiave privata. Copia il file del certificato e la chiave privata nella directory nginx/ssl come:

$ cd myregistry/nginx/ssl
$ cp /your-ssl-certificate-path/certificate.crt .
$ cp /your-private-key-path/private.key .

Se non si dispone di un certificato SSL acquistato valido, è possibile generare il proprio certificato SSL autofirmato. Ricorda che un certificato SSL autofirmato non è consigliato per gli ambienti di produzione. Per generare un certificato SSL autofirmato, esegui il comando seguente:

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout \
 /etc/ssl/private/nginx-private.key -out /etc/ssl/certs/nginx-certificate.crt

Ti verrà chiesto di inviare alcuni dettagli come il codice paese, il nome di dominio, l'ID e-mail. Compila i dettagli e continua.

Ora imposta l'autenticazione di base come:

Vai alla directory di autenticazione

$ cd auth

Richiedi un nuovo file di password denominato register.password per il tuo utente. In questo esempio userò l'utente linuxtechi.

$ htpasswd -Bc registry.password linuxtechi

Se ricevi 'comando htpasswd non trovato', esegui il seguente comando nel tuo terminale e riprova.

$  sudo apt install apache2-utils -y

Digita una password complessa e immetti di nuovo per confermare la password. Hai aggiunto un utente di autenticazione di base per il registro Docker.

Esegui registro Docker

Hai completato la configurazione. Puoi creare il registro usando il comando docker-compose.

Vai alla directory, dove creiamo il file docker-compose.yml

$ cd myregistry

Ora esegui il seguente comando:

$ docker-compose up -d

Il registro Docker è ora attivo, puoi verificare i contenitori in esecuzione utilizzando il seguente comando:

$ docker ps -a

Otterrai il seguente output:

Trascina l'immagine da Docker Hub a un registro privato

Per archiviare un'immagine dall'hub Docker al registro privato, utilizzare il comando Docker pull per estrarre le immagini Docker dall'hub Docker. In questo esempio, tirerò l'immagine della finestra mobile di centos.

$ docker pull centos

Dopo aver estratto con successo le immagini dall'hub Docker, tagga un'immagine per etichettarla per il registro privato.

In questo esempio, taggherò le immagini di centos come:register.linuxtechi.com/linuxtechi-centos

$ tag immagine docker [nome immagine] register.linuxtechi.com/[nome-immagine-nuova]

Esempio:

$ docker images tag centos registry.linuxtechi.com/linuxtechi-centos

Per verificare se l'immagine della finestra mobile è disponibile localmente o meno, esegui il comando seguente.

$ docker images

Inserisci l'immagine della finestra mobile nel registro privato

Hai estratto l'immagine della finestra mobile dall'hub della finestra mobile e hai creato un tag per il registro privato. Ora devi eseguire il push dell'immagine della finestra mobile locale nel registro privato.

Innanzitutto, accedi al tuo registro privato usando il seguente comando:

$ docker login https://registry.linuxtechi.com/v2/

Usa il tuo URL di registro al posto di "https://registry.linuxtechi.com"

Ti verranno richiesti nome utente e password; riceverai un messaggio di accesso riuscito come:

Ora puoi eseguire il push dell'immagine della finestra mobile in un registro privato. Per eseguire il push dell'immagine, eseguire il comando seguente:

$ docker push registry.linuxtechi.com/linuxtechi-centos

Sostituisci il nome dell'immagine dopo "docker push"

Una volta completato il push, puoi andare nel browser e inserire l'URL:

https://registry.linuxtechi.com/v2/_catalog

Sostituisci register.linuxtechi.com con il tuo URL e fornisci l'autenticazione di base. Troverai l'elenco dei repository come:

Estrazione dell'immagine della finestra mobile dal registro privato

Hai eseguito il push dell'immagine della finestra mobile locale nel registro della finestra mobile privata. Allo stesso modo puoi trasferire le immagini della finestra mobile dal registro privato della finestra mobile al server locale.

Esegui il comando seguente per accedere al tuo server di registro privato.

$ docker login https://registry.linuxtechi.com

Sostituisci register.linuxtechi.com con il tuo URL di registro privato e fornisci l'autenticazione di base. Una volta che l'accesso è riuscito, esegui il comando seguente per estrarre l'immagine della finestra mobile dal registro privato. In questo esempio, estrarrò l'immagine docker precedentemente inviata nel server locale. Puoi avere la tua ipotesi per il nome dell'immagine della finestra mobile.

$ docker pull registry.linuxtechi.com/linuxtechi-centos

Avrai un output simile a:

Conclusione:

Nell'articolo hai imparato come ospitare il tuo registro Docker privato. Inoltre hai un'idea su come estrarre le immagini dall'hub Docker al server locale, taggare l'immagine e inserirla nel registro privato. Hai anche imparato come estrarre le immagini della finestra mobile dal registro privato nel server locale.

Leggi anche :Come installare KVM su Ubuntu 20.04 LTS Server (Focal Fossa)


Ubuntu
  1. Come configurare e utilizzare il registro Docker privato

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

  3. Come configurare HAProxy in Ubuntu 16.04

  4. Come installare Docker su Ubuntu 18.04 / Ubuntu 18.10 / Ubuntu 19.04

  5. Come configurare in modo pulito il Docker di rete in Ubuntu Gnome 15.10?

Come configurare e configurare Docker Swarm Cluster su Ubuntu

Come configurare il registro Docker privato su Ubuntu 18.04 LTS

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

Come installare Docker su Ubuntu 20.04, 18.04, 21.04

Come installare Docker su Ubuntu 14.04

Come creare un registro Docker privato su Ubuntu Linux