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.