Sådan konfigureres et privat Docker-register på Ubuntu 22.04

Sådan konfigureres et privat Docker-register på Ubuntu 22.04

Docker-registre er vigtige komponenter i enhver moderne softwareudviklingsproces. De giver en central placering til at lagre, administrere og distribuere Docker-images, hvilket gør det nemt for udviklingshold at dele og genbruge kode. I denne vejledning vil vi guide dig gennem trinene til at konfigurere et privat Docker-register på Ubuntu 22.04.

Introduktion

Et privat Docker-register er en værdifuld ressource for organisationer, der ønsker at have kontrol over deres Docker-images og sikre, at de kun er tilgængelige for autoriserede brugere. Ved at oprette dit eget private register kan du:

– Styre adgangen til dine Docker-images
– Sikre, at kun betroede brugere kan trække og skubbe images
– Oprette flere opbevaringssteder for billeder til forskellige projekter eller teams

Forudsætninger

Før du går i gang, skal du sikre, at du har følgende på plads:

– En Ubuntu 22.04-server med root-adgang
– Et domænenavn eller en offentlig IP-adresse til dit register
– En SSL-certifikat for dit domænenavn

Trin 1: Installer Docker

Hvis Docker ikke allerede er installeret på din server, kan du installere det ved at køre følgende kommandoer:


sudo apt update
sudo apt install docker.io

Trin 2: Opret et Docker-register

Vi vil bruge Notary Server til at oprette vores private Docker-register. Notary er et værktøj til at administrere signering og verificering af Docker-images.

Kør følgende kommandoer for at installere Notary:


sudo apt install notary
sudo systemctl enable --now notary-server

Trin 3: Konfigurer Notary Server

Nu skal vi konfigurere Notary Server til at lytte på en offentlig IP-adresse eller et domænenavn. Åbn konfigurationsfilen for Notary:


sudo nano /etc/notary/notary-server.conf

Find afsnittet [server] og rediger følgende linjer:


hostname = <dit_domænenavn_eller_offentlige_ip>
tls_port = 443

Gem og luk filen.

Trin 4: Opret et certifikatudstedende myndighed (CA)

En CA bruges til at signere certifikater, som vil blive brugt til at sikre kommunikation med dit register. Kør følgende kommandoer for at oprette en CA:


sudo mkdir -p /etc/pki/CA
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout /etc/pki/CA/ca.key -out /etc/pki/CA/ca.crt

Trin 5: Opret et TLS-certifikat for dit register

Nu skal vi oprette et TLS-certifikat for vores register. Kør følgende kommandoer:


sudo mkdir -p /etc/docker/certs.d/<dit_domænenavn>
sudo openssl req -newkey rsa:4096 -nodes -keyout /etc/docker/certs.d/<dit_domænenavn>/server-key.pem -out /etc/docker/certs.d/<dit_domænenavn>/server.csr
sudo openssl x509 -req -days 3650 -in /etc/docker/certs.d/<dit_domænenavn>/server.csr -CA /etc/pki/CA/ca.crt -CAkey /etc/pki/CA/ca.key -CAcreateserial -out /etc/docker/certs.d/<dit_domænenavn>/server.crt

Trin 6: Konfigurer Docker til at bruge Notary

Åbn Docker-daemonkonfigurationsfilen:


sudo nano /etc/docker/daemon.json

Tilføj følgende JSON-blok:

json
{
"registry-mirrors": ["https://<dit_domænenavn>:443"],
"insecure-registries": ["<dit_domænenavn>"],
"runtimes": {
"runc": {
"options": [
"--log-level=debug",
"--debug"
]
}
}
}

Gem og luk filen.

Genstart Docker-daemon:


sudo systemctl restart docker

Trin 7: Opret et Docker-lager

Nu skal vi oprette et Docker-lager, som vil lagre vores Docker-images. Kør følgende kommando:


docker volume create docker-registry

Trin 8: Start et Docker-register

Nu er vi klar til at starte et Docker-register. Kør følgende kommando:


docker run -d --name registry --restart=always -v docker-registry:/var/lib/registry -p 5000:5000 -e REGISTRY_STORAGE_DELETE_ENABLED=true registry:2

Trin 9: Verificer dit register

Åbn din webbrowser og gå til din registrerings-URL (f.eks. https://:5000). Du skal se en blank side, der angiver, at dit register kører.

Konklusion

Tillykke! Du har nu konfigureret et privat Docker-register på Ubuntu 22.04. Dette giver dig kontrol over dine Docker-images og sikrer, at de kun er tilgængelige for autoriserede brugere. Brug dit register til at forbedre din softwareudviklingsproces, samarbejde effektivt og beskytte dit intellektuelle ejendom.

Ofte stillede spørgsmål

Q: Kan jeg bruge et eksisterende SSL-certifikat til mit register?
A: Ja, du kan bruge et eksisterende SSL-certifikat. Du skal bare placere certifikat- og nøglefilerne i /etc/docker/certs.d/ og justere din Docker-daemonkonfigurationsfil tilsvarende.

Q: Hvad er fordelene ved at bruge et privat Docker-register?
A: Fordelene inkluderer kontrol over dine images, forbedret sikkerhed, øget samarbejde og bedre performance.

Q: Kan jeg bruge Docker Hub sammen med mit private register?
A: Ja, du kan bruge begge dele. Konfigurer Docker til at bruge dit private register som standard og træk og skub images fra Docker Hub efter behov.

Q: Hvordan opdaterer jeg Docker-images i mit private register?
A: Du kan bruge docker push-kommandoen til at skubbe opdaterede images til dit register.

Q: Hvordan administrerer jeg brugere og adgang til mit register?
A: Notary understøtter ikke brugerstyring. Du kan overveje at bruge et tredjepartsværktøj såsom Harbor eller JFrog Artifactory til at håndtere brugerstyring.

Q: Hvor kan jeg få mere information om Docker-registre?
A: Du kan finde yderligere oplysninger i Docker-dokumentationen.

Q: Hvordan fejlsøger jeg problemer med mit private Docker-register?
A: Tjek Docker-logfiler (/var/log/docker), Notary-logfiler (/var/log/notary) og systemlogfiler (/var/log/syslog) for at finde potentielle fejl.

Q: Er det sikkert at bruge et selvsigneret SSL-certifikat til mit register?
A: Selvsignerende certifikater er ikke sikre for produktionsbrug. Det anbefales at bruge et certifikat udstedt af en betroet certifikatautoritet.