GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nastavit a používat soukromý registr dockerů

Úvod

Pokud chcete zajistit hladký vývoj CI/CD pomocí platformy Docker, zvažte nastavení soukromého registru Docker. Nejen, že urychluje doručení, ale je to také praktický způsob distribuce zdrojů a sdílení obrázků Docker mezi kontejnery.

V tomto kurzu se dozvíte, jak nastavit soukromý registr Docker a nakonfigurovat jej pro externí přístupnost.

Předpoklady

  • Přístup k uživatelskému účtu pomocí sudo nebo root privilegia
  • Klientský server
  • Server pro soukromý registr Docker
  • Docker a Docker–Compose na obou serverech
  • Nginx na soukromém serveru registru Docker

Co je soukromý registr dockerů

Registr Docker je serverová aplikace a součást produktu platformy jako služby společnosti Docker. Umožňuje vám lokálně ukládat všechny obrázky Dockeru do jednoho centralizovaného umístění.

Když nastavíte soukromý registr, přiřadíte serveru, který bude komunikovat s Docker Hub přes internet. Úlohou serveru je stahovat a odesílat obrázky, ukládat je lokálně a sdílet je mezi ostatními hostiteli Dockeru.

Spuštěním externě přístupného registru můžete ušetřit cenné zdroje a urychlit procesy. Tento software vám umožňuje stahovat obrázky, aniž byste se museli připojovat k Docker Hub, šetří šířku pásma a chrání systém před potenciálními online hrozbami.

Hostitelé Dockeru mohou přistupovat k místnímu úložišti prostřednictvím zabezpečeného připojení a kopírovat obrazy z místního registru, aby vytvořili své vlastní kontejnery.

Než začnete

Jak je uvedeno v části předpoklady, průvodce předpokládá, že již máte na všech serverech nainstalované Docker a Docker-Compose.

Chcete-li ověřit, že máte požadovaný software, můžete zkontrolovat jejich verze vydání pomocí příkazů:

docker version
docker-compose version

Další věc, kterou budete chtít zajistit, je, že se služba Docker spustila a je nastavena tak, aby byla povolena při spouštění:

sudo systemctl start docker
sudo systemctl enable docker

Nainstalujte a nakonfigurujte soukromý registr dockerů

Krok 1:Vytvořte adresáře registru

Začněte konfigurovat server, který bude hostitelem soukromého registru. Nejprve chcete vytvořit nový adresář, ve kterém budou uloženy všechny požadované konfigurační soubory.

1. Následující příkaz vytvoří nový adresář projektu označený registry a dva podadresáře - nginx a auth :

mkdir -p registry/{nginx, auth}

2. Přejděte do registry a vytvořte dva nové adresáře v nginx :

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

3. Prohlédněte si hierarchii nově vytvořených adresářů zadáním:

tree

Krok 2:Vytvořte skript Docker-Compose a definujte služby

Dále je třeba vytvořit a nakonfigurovat nový docker-compose.yml skript. Skript definuje verzi Docker-Compose a také služby, které potřebujete k nastavení soukromého registru.

1. V registry vytvořte nový soubor adresář s textovým editorem podle vašich preferencí:

nano docker-compose.yml

2. V tomto konfiguračním souboru je potřeba definovat několik věcí, takže je pečlivě sledujte a pečlivě přidejte každou část obsahu:

version: '3'
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:
      - registrydata:/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:
  registrydata:
    driver: local

3. Uložte a zavřete soubor.

Vysvětlení konfigurace:

Nejprve definujete verzi Docker-Compose, kterou chcete použít. V tomto příkladu je to version: '3' . Poté přejdete k definování všech součástí registru Docker, počínaje #Registry služba.

Docker Registry je v podstatě kontejner s bitovou kopií registru, proto je bitová kopie definována jako registry:2 .

Přidání restart: always line zajišťuje, že spustíte Docker Registry jako službu, jakmile spustíte systém.

Určení portů 5000:5000 instruuje Docker, že hostitel a běžící kontejner komunikují přes definovaná čísla portů.

Služba připojí svazek dockeru registrydata a místní adresář auth , spolu s jeho ověřovacím souborem registry.passwd .

Dalším prvkem je #Nginx Service . Konfigurace popisuje, že služba běží na portech 80:80 (HTTPS) a 443:443 (HTTPS). Připojí místní adresář pro virtuální konfiguraci (conf.d ) a certifikáty SSL (ssl ).

Nakonec nastavte mynet s ovladačem mostu a registrydata s místním ovladačem jako parametry pro vlastní síť.

Krok 3:Nastavte přesměrování portu Nginx

Dalším krokem je konfigurace virtuálního hostitele Nginx a jeho konfigurace pro službu Nginx.

1. Přejděte na nginx/conf.d/ adresář, který jste vytvořili v předchozím kroku:

cd nginx/conf.d/

2. Vytvořte nový soubor virtuálního hostitele s názvem registry.conf :

nano registry.conf

3. Přidejte následující obsah:

upstream docker-registry {
    server registry:5000;
}

server {
    listen 80;
    server_name registry.example-server.com;
    return 301 https://registry.example-server.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name registry.example-server.com;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    # Log files for Debug
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    location / {
        # Do not allow connections from docker 1.5 and earlier
        # docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents
        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;
    }

}

4. Uložte soubor a vraťte se do shellu terminálu.

Krok 4:Zvětšete nahrávanou velikost souboru Nginx

Ve výchozím nastavení Nginx omezuje velikost nahrávaného souboru na 1 MB . Protože mnoho obrázků Docker toto číslo překračuje, nejlepším postupem je zvýšit maximální velikost souboru na Nginx. Nastavením max_body_size se ujistěte, že můžete nahrávat obrázky, které mají větší velikost souboru. 2 GB .

1. Vytvořte další konfigurační soubor pomocí:

nano additional.conf

2. Přidejte do souboru následující řádek:

client_max_body_size 2G;

3. Uložte a zavřete soubor.

Krok 5:Konfigurace certifikátu SSL a základního ověřování

1. Soubory certifikátů SSL vaší domény je třeba zkopírovat do ssl adresář. Chcete-li to provést, spusťte příkazy:

cp /path/to/ssl/fullchain.pem ssl/
cp /path/to/ssl/privkey.pem ssl/

2. Poté přejděte na auth adresář:

cd auth

3. A vyžádejte si nový soubor hesel s názvem registry.passwd pro vašeho uživatele:

htpasswd -Bc registry.passwd example

4. Zadejte silné heslo a pro potvrzení jej zadejte znovu. Tímto jste přidali heslo pro svého uživatele.

Krok 6:Přidejte certifikát kořenové CA

Nyní musíte přidat certifikát kořenové CA do Dockeru a systému, na kterém pracujete.

1. Exportujte soubor .crt soubor s OpenSSL zadáním:

openssl x509 -in rootCA.pem -inform PEM -out rootCA.crt

2. Zkopírujte kořenový certifikát do nového adresáře pro certifikáty Docker:

mkdir -p /etc/docker/certs.d/registry.example-server.com/
cp rootCA.crt /etc/docker/certs.d/example-server.com/

3. Dále zkopírujte stejný certifikát do jiného nového adresáře pod názvem /usr/share/ca-certificate/extra :

mkdir -p .usr.share.ca-certificates/extra/
cp rootCA.crt /usr/share/ca-certificates/extra/

4. Překonfigurujte nově vytvořený ca-certificate balíček zadáním:

dpkg-reconfigure ca-certificates

5. Nakonec restartujte službu Docker:

systemctl restart docker

Krok 7:Spusťte Docker Registry

Když je vše nastaveno a připraveno, můžete vytvořit kontejner registru Docker pomocí Docker-Compose:

docker-compose up -d

Zkontrolujte, zda je spuštěn registr a služby Nginx:

docker-compose ps
netstat -plntu

Výstup by vám měl ukázat služby a jim přiřazené porty.

Natáhnout obrázek z centra Docker do soukromého registru

1. Chcete-li lokálně uložit obrázek z Docker Hub do vašeho soukromého registru, použijte docker pull příkaz:

docker pull [docker_image]

2. Přidejte k obrázku štítek pro označení soukromého registru:

docker image tag [docker_image] registry.example-server.com/[new_image_name]

3. Můžete zkontrolovat, zda je obraz Dockeru lokálně dostupný, tím, že vyzvete systém, aby vypsal všechny lokálně uložené obrazy:

docker images

Jak poslat obrázek Dockeru do soukromého registru

1. Chcete-li odeslat obrázek z hostitele Docker na soukromý server registru Docker, musíte se nejprve přihlásit do registru pomocí příkazu:

docker login https://registry.example-server.com/v2/

2. Zadejte uživatelské jméno a heslo jste definovali pro virtuálního hostitele.

3. Nyní můžete odeslat svůj obraz do soukromého registru příkazem:

docker push registry.example-server.com/[new_image_name]

4. Podívejte se na seznam obrázků uložených v soukromém registru Docker:

http -a example https://registry.example-server.com/v2/_catalog

Ubuntu
  1. Jak nastavit limit využití paměti Dockeru a CPU

  2. Jak nastavit soukromý registr dockerů na Rocky Linux 8

  3. Jak nainstalovat a používat Docker v Ubuntu 20.04

  1. NFS Docker Volumes:Jak vytvořit a používat

  2. Jak nainstalovat a používat Docker na Ubuntu 20.04

  3. Jak nainstalovat a používat Docker na Ubuntu 18.04

  1. Jak nainstalovat a používat Docker Compose na Ubuntu 18.04

  2. Jak nainstalovat a používat Docker na CentOS 7

  3. Jak nainstalovat a používat Docker Compose na CentOS 7