Ako nastaviť súkromný register Docker na Ubuntu 22.04


Tento návod existuje pre tieto verzie OS

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 17.10 (Artful Aardvark)

Na tejto stránke

  1. Predpoklady
  2. Krok 1 - Nakonfigurujte bránu firewall
  3. Krok 2 - Nainštalujte Docker a Docker Compose
  4. Krok 3 - Nakonfigurujte register Docker

    1. Vytvorte užívateľské adresáre
    2. Vytvorte Amazon S3 Bucket
    3. Vytvorte súbor Docker Compose File
    4. Nastavte overenie
  5. Krok 4 – Nainštalujte SSL

    1. Skopírujte súbor Dhparam do kontajnera
  6. Krok 5 - Nakonfigurujte Nginx
  7. Krok 6 - Spustite register Docker
  8. Krok 7 – Prístup a používanie registra Docker z klientskeho počítača
  9. Záver

Ak pracujete pre organizáciu a chcete si ponechať svoje obrázky Docker interne na rýchle nasadenie, potom je hosťovanie súkromného úložiska Docker perfektné. Vlastný register dockerov vám umožňuje vlastniť kanál na distribúciu obrázkov a mať prísnejšiu kontrolu nad ukladaním a distribúciou obrázkov. Môžete integrovať svoj register so systémom CI/CD a zlepšiť tak svoj pracovný postup.

Tento tutoriál vás naučí, ako nastaviť a používať súkromný register Docker na serveri Ubuntu 22.04 pomocou Amazon S3 ako úložiska.

Predpoklady

    Dva servery Linux s Ubuntu 22.04. Jeden server bude fungovať ako hostiteľ registra, zatiaľ čo druhý bude slúžiť ako klient na odosielanie požiadaviek a prijímanie obrázkov od hostiteľa.

    Registrovaný názov domény smerujúci na hostiteľský server. V našom návode budeme používať registry.example.com.

    Používateľ bez oprávnenia root s oprávneniami sudo na oboch počítačoch.

    Uistite sa, že je všetko aktualizované.

    $ sudo apt update
    $ sudo apt upgrade
    

    Niekoľko balíkov, ktoré váš systém potrebuje.

    $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
    

    Niektoré z týchto balíkov už môžu byť vo vašom systéme nainštalované.

Krok 1 - Nakonfigurujte bránu firewall

Prvým krokom je konfigurácia brány firewall. Ubuntu sa štandardne dodáva s ufw (Nekomplikovaný firewall).

Skontrolujte, či je spustený firewall.

$ sudo ufw status

Mali by ste dostať nasledujúci výstup.

Status: inactive

Povoľte port SSH, aby firewall pri jeho povolení neprerušil aktuálne pripojenie.

$ sudo ufw allow OpenSSH

Povoliť aj porty HTTP a HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Povoľte bránu firewall

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Znova skontrolujte stav brány firewall.

$ sudo ufw status

Mali by ste vidieť podobný výstup.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Krok 2 - Nainštalujte Docker a Docker Compose

Tento krok sa vyžaduje na serveri aj na klientskom počítači.

Ubuntu 22.04 sa dodáva so staršou verziou Docker. Ak chcete nainštalovať najnovšiu verziu, najprv importujte kľúč Docker GPG.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Vytvorte súbor úložiska Docker.

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Aktualizujte zoznam systémového úložiska.

$ sudo apt update

Nainštalujte najnovšiu verziu Docker.

$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Skontrolujte, či je spustený.

$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-04-13 09:37:09 UTC; 3min 47s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 2106 (dockerd)
      Tasks: 7
     Memory: 26.0M
        CPU: 267ms
     CGroup: /system.slice/docker.service
             ??2106 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

V predvolenom nastavení Docker vyžaduje oprávnenia root. Ak sa chcete vyhnúť používaniu sudo pri každom spustení príkazu docker, pridajte svoje používateľské meno do skupiny docker.

$ sudo usermod -aG docker $(whoami)

Ak chcete povoliť túto zmenu, budete sa musieť odhlásiť zo servera a znova sa prihlásiť ako rovnaký používateľ alebo použiť nasledujúci príkaz.

$ su - ${USER}

Potvrďte, že váš používateľ je pridaný do skupiny Docker.

$ groups
navjot wheel docker

Krok 3 - Nakonfigurujte register Docker

Vytvorte užívateľské adresáre

Vytvorte adresár pre konfiguráciu registra.

$ mkdir ~/docker-registry

Prepnite sa do adresára docker-registry.

$ cd ~/docker-registry

Vytvorte adresár na uloženie overovacieho hesla HTTP, konfiguračných súborov Nginx a certifikátov SSL.

$ mkdir auth

Vytvorte ďalší adresár na ukladanie denníkov Nginx.

$ mkdir logs

Vytvorte Amazon S3 Bucket

Údaje registra a obrázky môžete uložiť na server alebo použiť službu cloudového hostingu. V našom návode budeme používať cloudovú službu Amazon S3.

Ďalším krokom je nastavenie konfiguračného súboru s niekoľkými dôležitými nastaveniami. Tieto nastavenia je možné definovať aj v súbore docker-compose.yml, ale oveľa lepšie je mať samostatný súbor.

Vytvorte vedro s nasledujúcimi nastaveniami.

  • ACL by malo byť vypnuté.
  • Verejný prístup do vedra by mal byť zakázaný.
  • Verzia segmentu by mala byť zakázaná.
  • Povoľte šifrovanie Bucket pomocou spravovaných kľúčov Amazon S3. (SSE-S3)
  • Uzamknutie objektu by malo byť vypnuté.

Vytvorte používateľa IAM s nasledujúcou politikou.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation",
        "s3:ListBucketMultipartUploads"
      ],
      "Resource": "arn:aws:s3:::S3_BUCKET_NAME"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::S3_BUCKET_NAME/*"
    }
  ]
}

Nahraďte S3_BUCKET_NAME názvom vášho vedra S3.

Poznamenajte si tajný kľúč, tajnú hodnotu a oblasť vedra, ktoré chcete použiť neskôr.

Vytvorte súbor Docker Compose File

Vytvorte súbor docker-compose.yml a otvorte ho na úpravy.

$ nano docker-compose.yml

Vložte do nej nasledujúci kód.

services:
  registry:
    image: registry:2
    restart: always
    environment:
      - REGISTRY_STORAGE=s3
      - REGISTRY_STORAGE_S3_REGION=us-west-2
      - REGISTRY_STORAGE_S3_BUCKET=hf-docker-registry
      - REGISTRY_STORAGE_S3_ENCRYPT=true
      - REGISTRY_STORAGE_S3_CHUNKSIZE=5242880
      - REGISTRY_STORAGE_S3_SECURE=true
      - REGISTRY_STORAGE_S3_ACCESSKEY=AKIA3FIG4NVFNXKQXMSJ
      - REGISTRY_STORAGE_S3_SECRETKEY=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
      - REGISTRY_STORAGE_S3_V4AUTH=true
      - REGISTRY_STORAGE_S3_ROOTDIRECTORY=/image-registry
      - REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=inmemory
      - REGISTRY_HEALTH_STORAGEDRIVER_ENABLED=false
  nginx:
    image: "nginx:alpine"
    ports:
      - 443:443
    links:
      - registry:registry
    volumes:
      - ./auth:/etc/nginx/conf.d
      - ./auth/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./logs:/var/log/nginx
      - /etc/letsencrypt:/etc/letsencrypt

Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.

Poďme si prejsť, čo sme nastavili v našom súbore na zostavenie.

    Prvým krokom je získať najnovší obrázok verzie 2 registra Docker z centra. Nepoužívame najnovšiu značku, pretože môže spôsobiť problémy v prípade aktualizácie hlavnej verzie. Nastavenie na 2 vám umožní získať všetky aktualizácie 2.x a zároveň zabrániť automatickej aktualizácii na ďalšiu hlavnú verziu, ktorá môže priniesť prelomové zmeny.

    Kontajner databázy Registry je nastavený na reštartovanie vždy v prípade zlyhania alebo neočakávaného vypnutia.

    Pre úložisko Amazon S3 sme nastavili rôzne premenné prostredia. Poďme si ich rýchlo prejsť.

    • REGISTRY_STORAGE nastavuje typ úložiska. Vybrali sme s3, pretože používame Amazon S3.
    • REGISTRY_STORAGE_S3_REGION nastavuje oblasť vášho segmentu S3.
    • REGISTRY_STORAGE_S3_BUCKET nastavuje názov vášho segmentu S3.
    • REGISTRY_STORAGE_S3_ENCRYPT – nastavte ju na hodnotu true, ak ste povolili šifrovanie segmentu.
    • REGISTRY_STORAGE_S3_CHUNKSIZE nastavuje veľkosť odovzdávaných blokov. Mala by byť väčšia ako 5 MB (5 * 1024 * 1024).
    • REGISTRY_STORAGE_S3_SECURE – ak sa chystáte používať HTTPS, nastavte ju na hodnotu true.
    • REGISTRY_STORAGE_S3_ACCESSKEY a REGISTRY_STORAGE_S3_SECRETKEY – Poverenia používateľa, ktoré ste získali po vytvorení používateľa IAM.
    • REGISTRY_STORAGE_S3_V4AUTH – nastavte ju na hodnotu true, ak používate overenie AWS verzie 4. Ak sa vám zobrazujú chyby súvisiace s prihlásením S3, nastavte ho na hodnotu false.
    • REGISTRY_STORAGE_S3_ROOTDIRECTORY – nastavuje koreňový adresár vo vašom segmente, v ktorom budú uložené vaše údaje registra.
    • REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR – nastavuje umiestnenie vyrovnávacej pamäte. V našom prípade ho ukladáme do pamäte. Môžete ho tiež nastaviť na používanie Redis.
    • REGISTRY_HEALTH_STORAGEDRIVER_ENABLED – Ak chcete vypnúť službu kontroly stavu úložiska v databáze Registry, nastavte ju na hodnotu false. V databáze Registry sa vyskytla chyba, ktorá môže spôsobiť problémy, ak ju nenastavíte na hodnotu false.

    Register Docker komunikuje cez port 5000, čo je to, čo sme na našom serveri vystavili dockeru.

    Mapovanie ./auth:/etc/nginx/conf.d zaisťuje, že všetky nastavenia Nginx sú dostupné v kontajneri.

    ./auth/nginx.conf:/etc/nginx/nginx.conf:ro mapuje súbor nastavení Nginx zo systému do jedného v kontajneri v režime iba na čítanie.

    ./logs:/var/log/nginx umožňuje prístup k protokolom Nginx v systéme mapovaním do adresára protokolov Nginx v kontajneri.

    Nastavenia registra Docker sú uložené v súbore /etc/docker/registry/config.yml v kontajneri a namapovali sme ho na súbor config.yml v aktuálnom adresár, ktorý vytvoríme v ďalšom kroku.

Nastavte overenie

Ak chcete nastaviť autentifikáciu HTTP, musíte si nainštalovať balík httpd-tools.

$ sudo apt install apache2-utils -y

Vytvorte súbor s heslom v adresári ~/docker-registry/auth.

$ htpasswd -Bc ~/docker-registry/auth/nginx.htpasswd user1
New password:
Re-type new password:
Adding password for user user1

Príznak -c dáva príkazu príkaz na vytvorenie nového súboru a príznak -B má použiť algoritmus bcrypt podporovaný Dockerom. Nahraďte user1 užívateľským menom podľa vášho výberu.

Ak chcete pridať ďalších používateľov, spustite príkaz znova, ale bez príznaku -c.

$ htpasswd -B ~/docker-registry/auth/registry.password user2

Teraz bude súbor namapovaný na kontajner databázy Registry na overenie.

Krok 4 – Nainštalujte SSL

Na vygenerovanie certifikátu SSL musíme nainštalovať Certbot. Certbot môžete nainštalovať pomocou úložiska Ubuntu alebo získať najnovšiu verziu pomocou nástroja Snapd. Budeme používať verziu Snapd.

Ubuntu 22.04 sa štandardne dodáva s nainštalovaným Snapd. Spustite nasledujúce príkazy, aby ste sa uistili, že vaša verzia Snapd je aktuálna.

$ sudo snap install core && sudo snap refresh core

Nainštalujte Certbot.

$ sudo snap install --classic certbot

Pomocou nasledujúceho príkazu zaistite spustenie príkazu Certbot vytvorením symbolického odkazu na adresár /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Spustite nasledujúci príkaz na vygenerovanie certifikátu SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email  -d registry.example.com

Vyššie uvedený príkaz stiahne certifikát do adresára /etc/letsencrypt/live/registry.example.com na vašom serveri.

Vygenerujte certifikát Diffie-Hellman group.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Skontrolujte službu plánovača obnovy Certbot.

$ sudo systemctl list-timers

Ako jednu zo služieb naplánovaných na spustenie nájdete snap.certbot.renew.service.

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Sun 2023-04-14 00:00:00 UTC 19min left    Sat 2023-02-25 18:04:05 UTC n/a          snap.certbot.renew.timer  snap.certbot.renew.service
Sun 2023-04-14 00:00:20 UTC 19min left    Sat 2023-02-25 10:49:23 UTC 14h ago      apt-daily-upgrade.timer   apt-daily-upgrade.service
Sun 2023-04-14 00:44:06 UTC 3h 22min left Sat 2023-02-25 20:58:06 UTC 7h ago       apt-daily.timer           apt-daily.service

Vykonajte suchý chod procesu a skontrolujte, či obnovenie SSL funguje správne.

$ sudo certbot renew --dry-run

Ak nevidíte žiadne chyby, všetko je nastavené. Váš certifikát sa automaticky obnoví.

Skopírujte súbor Dhparam do kontajnera

Skopírujte certifikát Diffie-Hellman group do adresára ~/docker-registry/auth, ktorý bude namapovaný na kontajner.

$ sudo cp /etc/ssl/certs/dhparam.pem ~/docker-registry/auth

Krok 5 - Nakonfigurujte Nginx

Ďalší krok zahŕňa konfiguráciu servera Nginx ako front-end proxy pre server databázy Registry Docker. Register Docker sa dodáva so vstavaným serverom pracujúcim na porte 5000. Umiestníme ho za Nginx.

Vytvorte a otvorte súbor ~/docker-registry/auth/nginx.conf na úpravu.

$ sudo nano ~/docker-registry/auth/nginx.conf

Vložte do nej nasledujúci kód.

events {
    worker_connections  1024;
}

http {

  upstream docker-registry {
    server registry:5000;
  }

  ## Set a variable to help us decide if we need to add the
  ## 'Docker-Distribution-Api-Version' header.
  ## The registry always sets this header.
  ## In the case of nginx performing auth, the header is unset
  ## since nginx is auth-ing before proxying.
  map $upstream_http_docker_distribution_api_version $docker_distribution_api_version {
    '' 'registry/2.0';
  }

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

    # SSL
    ssl_certificate /etc/letsencrypt/live/registry.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/registry.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/registry.example.com/chain.pem;

    access_log  /var/log/nginx/registry.access.log;
    error_log   /var/log/nginx/registry.error.log;

    # Recommendations from https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers on;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/nginx/conf.d/dhparam.pem;
    resolver 8.8.8.8;

    # disable any limits to avoid HTTP 413 for large image uploads
    client_max_body_size 0;

    # required to avoid HTTP 411: see Issue #1486 (https://github.com/moby/moby/issues/1486)
    chunked_transfer_encoding on;

    location /v2/ {
      # 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;
      }

      # To add basic authentication to v2 use auth_basic setting.
      auth_basic "Registry realm";
      auth_basic_user_file /etc/nginx/conf.d/nginx.htpasswd;

      ## If $docker_distribution_api_version is empty, the header is not added.
      ## See the map directive above where this variable is defined.
      add_header 'Docker-Distribution-Api-Version' $docker_distribution_api_version always;

      proxy_pass                          http://docker-registry;
      proxy_set_header  Host              $http_host;   # required for docker client's sake
      proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP
      proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
      proxy_set_header  X-Forwarded-Proto $scheme;
      proxy_read_timeout                  900;
    }
  }
}

Uložte súbor stlačením Ctrl + X a po zobrazení výzvy zadajte Y.

Krok 6 - Spustite register Docker

Prepnite sa do adresára Docker Registry.

$ cd ~/docker-registry

Spustite dokovací kontajner.

$ docker compose up -d

Skontrolujte stav kontajnerov.

$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS                                      NAMES
3328b7e36bb2   nginx:alpine   "/docker-entrypoint.…"   About a minute ago   Up 3 seconds        80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   docker-registry-nginx-1
bf7cdfc0e013   registry:2     "/entrypoint.sh /etc…"   About a minute ago   Up About a minute   5000/tcp                                 docker-registry-registry-1

Prihláste sa do registra Docker.

$ docker login -u=user1 -p=password https://registry.example.com

Dostanete nasledujúci výstup.

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/username/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

Môžete tiež otvoriť adresu URL https://registry.example.com/v2/ vo svojom prehliadači a bude vyžadovať používateľské meno a heslo. Mali by ste vidieť prázdnu stránku s {}.

Adresu URL na termináli môžete skontrolovať pomocou curl.

$ curl -u user1 -X GET https://registry.example.com/v2/
Enter host password for user 'user1':
{}

Stiahnite si najnovší obrázok dokovacej stanice Ubuntu.

$ docker pull ubuntu:latest

Označte tento obrázok pre súkromný register.

$ docker tag ubuntu:latest registry.example.com/ubuntu2204

Vložte obrázok do registra.

$ docker push registry.example.com/ubuntu2204

Otestujte, či bol push úspešný.

$ curl -u user1 -X GET https://registry.example.com/v2/_catalog
Enter host password for user 'user1':
{"repositories":["ubuntu2204"]}

Po zobrazení výzvy zadajte svoje overovacie heslo Nginx a uvidíte zoznam úložísk dostupných prostredníctvom registra.

Odhláste sa pomocou terminálu a vymažte poverenia.

$ docker logout https://registry.example.com
Removing login credentials for registry.example.com

Skontrolujte zoznam obrázkov Docker, ktoré sú momentálne k dispozícii na použitie.

$ docker images
REPOSITORY                            TAG       IMAGE ID       CREATED       SIZE
registry                             2         8db46f9d7550   2 weeks ago   24.2MB
nginx                                alpine    8e75cbc5b25c   2 weeks ago   41MB
ubuntu                               latest    08d22c0ceb15   5 weeks ago   77.8MB
registry.example.com/ubuntu2204      latest    08d22c0ceb15   5 weeks ago   77.8MB

Krok 7 – Prístup a používanie registra Docker z klientskeho počítača

Prihláste sa na svoj klient-server. V kroku 1 sme nainštalovali Docker na klientsky počítač.

Prihláste sa do súkromného registra Docker z klientskeho počítača.

$ docker login -u=user1 -p=password https://registry.example.com

Vytiahnite obraz Ubuntu z registra.

$ docker pull registry.example.com/ubuntu2204

Uveďte zoznam všetkých obrázkov na vašom klientskom počítači.

$ docker images
REPOSITORY                        TAG        IMAGE ID       CREATED         SIZE
registry.example.com/ubuntu2204   latest     08d22c0ceb15   5 weeks ago   77.8MB

Vytvorte a spustite kontajner pomocou prevzatého obrázka.

$ docker run -it registry.example.com/ubuntu2204 /bin/bash

Budete prihlásení do Shell v kontajneri Ubuntu.

root@647899f255db:

Ak chcete skontrolovať verziu systému Linux, spustite nasledujúci príkaz.

root@a2da49fdbea9$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

Teraz môžete začať používať register Docker zo svojich klientskych počítačov.

Záver

Týmto sa končí náš návod na nastavenie súkromného registra Docker na serveri Ubuntu 22.04, ktorý používa Amazon S3 ako úložisko. Ak máte nejaké otázky, napíšte ich do komentárov nižšie.