Подешавање приватног Docker регистра на Ubuntu 22.04

Docker registar predstavlja skladište za Docker slike, omogućavajući njihovo čuvanje, distribuciju i organizaciju. Privatni registar je koristan za sigurno čuvanje slika koje nisu javno dostupne, kao i za veću kontrolu nad pristupom istim. U ovom uputstvu, objasnićemo proces postavljanja privatnog Docker registra na Ubuntu 22.04, koristeći Docker Compose.

Prednosti korišćenja privatnog Docker registra

* Povećana bezbednost: Slike u privatnom registru su zaštićene od neovlašćenog pristupa, jer im mogu pristupiti samo oni koji imaju potrebne dozvole.
* Kontrola pristupa: Imate mogućnost da kontrolišete ko može pristupiti i menjati slike u privatnom registru, postavljanjem odgovarajućih dozvola.
* Optimizovane performanse: Čuvanje slika u privatnom registru može skratiti vreme preuzimanja, jer se slike čuvaju lokalno, umesto preuzimanja sa javnog registra.
* Prilagođene konfiguracije: Privatni registar dozvoljava prilagođavanje konfiguracija, omogućavajući vam da prilagodite registar sopstvenim potrebama.

Neophodni preduslovi

* Server sa instaliranim Ubuntu 22.04 sistemom.
* Korisnički nalog sa administratorskim privilegijama.
* Docker instaliran na serveru.
* Docker Compose instaliran na serveru.

Postupak podešavanja privatnog Docker registra

1. Instalacija Docker Compose

Ukoliko Docker Compose nije već instaliran na vašem serveru, možete ga instalirati koristeći sledeće komande:


sudo apt update
sudo apt install docker-compose

2. Pokretanje Docker registra

Docker registar možete pokrenuti pomoću Docker Compose. Kreirajte datoteku pod nazivom docker-compose.yml sa sledećim sadržajem:


version: '3.8'

services:
registry:
image: registry:2
container_name: registry
ports:
- "5000:5000"
volumes:
- registry-data:/var/lib/registry
restart: always

U ovoj konfiguracionoj datoteci:

* image: definiše verziju Docker registar slike koju želite da koristite.
* container_name: definiše ime kontejnera za Docker registar.
* ports: preslikava port 5000 na vašem serveru na port 5000 unutar Docker registra.
* volumes: preslikava direktorijum registry-data na vašem serveru na direktorijum /var/lib/registry unutar Docker registra. Ovaj direktorijum se koristi za skladištenje podataka registra.

Nakon što kreirate docker-compose.yml datoteku, izvršite sledeću komandu kako biste pokrenuli Docker registar:


docker-compose up -d

3. Konfigurisanje registra

Podrazumevano, Docker registar koristi samopotpisani sertifikat za obezbeđivanje komunikacije. Ipak, preporučuje se korišćenje sertifikata potpisanog od strane pouzdanog sertifikacionog tela (CA). Za kreiranje potpisanog sertifikata, pratite sledeće korake:

a. Kreiranje CA


openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=docker-registry-ca"

b. Kreiranje sertifikata i ključa za registar


openssl genrsa -out registry.key 4096
openssl req -new -key registry.key -out registry.csr -subj "/CN=docker-registry-server"
openssl x509 -req -days 3650 -CA ca.crt -CAkey ca.key -in registry.csr -out registry.crt

c. Podešavanje TLS konfiguracije za registar

Otvorite datoteku registery/config.yml i dodajte sledeći konfiguracioni blok:


insecure_registries:
- "localhost:5000"

Ovo će onemogućiti proveru potpisa za slike preuzete sa vašeg privatnog registra.

Zatim, dodajte sledeći konfiguracioni blok kako biste definisali vašu TLS konfiguraciju:


https:
certificate: /certs/registry.crt
key: /certs/registry.key

Gde su /certs/registry.crt i /certs/registry.key putanje do vašeg potpisanog sertifikata i privatnog ključa.

d. Kreiranje tajne sa vašim sertifikatima

Zaustavite i ponovo pokrenite kontejner registra, koristeći sledeće komande:


docker-compose down
docker-compose up -d

Ovo će kreirati tajnu sa vašim sertifikatima i automatski ih montirati u kontejner registra.

Pristup privatnom registru

Sada kada ste podesili privatni Docker registar, možete mu pristupiti prateći ove korake:

a. Dodavanje repozitorijuma registra u vaše Docker klijentske konfiguracije


docker login <adresa_registra>:<port> -u korisničko_ime -p lozinka

Gde je adresa_registra adresa vašeg registra, port je port na kojem vaš registar radi, korisničko_ime je korisničko ime za pristup registru, i lozinka je odgovarajuća lozinka.

b. Guranje slike u privatni registar


docker pull <ime_slike>:<oznaka>
docker tag <ime_slike>:<oznaka> <adresa_registra>:<port>/<prostor_imena>/<ime_slike>:<oznaka>
docker push <adresa_registra>:<port>/<prostor_imena>/<ime_slike>:<oznaka>

Gde je <ime_slike>:<oznaka> ime slike koju želite da gurnete, <adresa_registra>:<port> adresa i port vašeg privatnog registra, i <prostor_imena>/<ime_slike>:<oznaka> željeni prostor imena, ime slike i oznaka u privatnom registru.

Zaključak

Postavljanje privatnog Docker registra na Ubuntu 22.04 je jednostavan proces koji pruža brojne prednosti, uključujući poboljšanu bezbednost, kontrolu pristupa i optimizovane performanse. Prateći korake opisane u ovom uputstvu, lako možete podesiti privatni registar i početi da ga koristite za organizaciju vaših Docker slika.

Često postavljana pitanja (FAQ)

1. Koje su alternative korišćenju Docker Compose za pokretanje Docker registra?
Možete koristiti komandu docker run za ručno pokretanje Docker registra ili koristiti Kubernetes za upravljanje klasterom Docker registara.

2. Kako mogu da upravljam autentifikacijom u svom privatnom Docker registru?
Možete koristiti različite mehanizme autentifikacije, kao što su osnovna autentifikacija (basic authentication), autentifikacija pomoću tokena ili OAuth2 autentifikacija.

3. Kako mogu da ograničim pristup određenim slikama u svom privatnom registru?
Možete koristiti kontrolu pristupa zasnovanu na ulogama (RBAC) da kreirate uloge i dodeljujete korisnike ili grupe tim ulogama. Dozvole za pristup slikama se mogu upravljati na osnovu uloga.

4. Da li mogu da integrišem svoj privatni Docker registar sa drugim alatima?
Da, možete integrisati vaš privatni registar.