Om du inte vet vad ett containerregister är, oroa dig inte. Det kommer att bli klart när du faktiskt trycker din första behållaravbildning till en GitLab-instans. För närvarande, tänk på dem som arkiv för dina containerbilder. Dessa kör inte behållare utan bara bilder (vanlig data) som sitter i fjärrinstansen för GitLab.
Varför vill du ha ett GitLab-containerregister?
Chansen är stor att din applikation är förpackad antingen som en enda Docker-bild eller som en samling av sådana bilder. Det betyder att olika versioner kommer att associeras med olika bilder och behållarregistret hjälper dig att hålla reda på dem individuellt och se vilka som ska buntas ihop i en viss version.
Registret är för behållare, vilket förvar är källkoden och GitLab är ett ställe att hantera dem alla.
Förutsättningar
- En fungerande GitLab-instans över HTTPS
- Rotåtkomst till instansen
- Åtkomst för att ändra ditt domännamns DNS-poster
Vi kommer att anta att vår GitLab körs gitlab.exempel.com .
Registrerings-DNS- och TLS-certifikat
Du måste vara rotanvändaren för att aktivera containerregistreringsfunktionen över GitLab-förekomsten. Enskilda användare kan sedan välja att använda den här funktionen i sina respektive projekt, om de önskar det. Det finns två sätt att göra det:
- Återanvänd befintligt domännamn och TLS-certifikat för gitlab.exempel.com och kör registret på en annan port.
- Peka på ett annat domännamn, låt oss säga, register.gitlab.exempel.com till samma IP-adress där GitLab körs och konfigurera registret där.
Låt oss gå med det andra alternativet eftersom det är mycket mer professionellt.
Steg 1: Lägg till en A-post för register.gitlab.exempel.com pekar på samma IP där din GitLab-instans körs.
Steg 2: Stoppa gitlab-tjänster som körs på din server.
$ sudo gitlab-ctl stoppSteg 3: Lägg till ACME-klient certbot's PPA till ditt system och installera certbot.
$ sudo add-apt-repository ppa: certbot / certbot$ sudo apt uppdatering
$ sudo apt install certbot
Steg 4: Skaffa certifikat från Let's Encrypt.
$ certbot certonlyDu kommer att se ett meddelande som:
“'
Hur vill du autentisera med ACME CA?
--
1: Snurra upp en tillfällig webbserver (fristående)
2: Placera filer i webbrootkatalogen (webroot)
--
Välj lämpligt nummer [1-2] och sedan [enter] (tryck på 'c' för att avbryta): 1
“'
Detta kommer då att be om din e-post, be dig att godkänna deras användarvillkor och, viktigast av allt, be dig om ditt domännamn som skulle vara register.gitlab.exempel.com i vårt exempelfall. Du får ett meddelande som säger om certifikaten erhölls eller inte. Om de var det, fortsätt till steg 5
Steg 5: Nu när vi har våra certs är det dags att placera dem under GitLab-relaterade kataloger.
$ cp / etc / letsencrypt / live / registry.gitlab.exempel.com / fullchain.pem/ etc / gitlab / ssl / registry.gitlab.exempel.crt
$ cp / etc / letsencrypt / live / registry.gitlab.exempel.com / privkey.pem
/ etc / gitlab / ssl / registry.gitlab.exempel.nyckel-
Säkra behörigheterna för dem:
$ chmod 600 / etc / gitlab / ssl / registry.gitlab.exempel.com.*Se till att du ersätter exemplet som resten av handledningen.com med ditt befintliga domännamn. Eftersom det är vad namnet på katalogen kommer att vara, där certbot har lagrat certifikatet.
Steg 6: Redigera GitLab-konfiguration. Öppna filen / etc / gitlab / gitlab.rb och lägg till följande rader längst ner på den:
registry_external_url 'https: // register.gitlab.exempel.com 'Om du har gjort allt noggrant är den mest komplicerade delen av installationen över! Du kommer nu att ha ett Container-register igång, kör bara:
$ sudo gitlab-ctl omkonfigurera$ sudo gitlab-ctl start
Aktivera register och trycka på bilder
Nu när vi har för oss själva ett behållarregister, låt oss skapa ett nytt projekt med GitLab-webbgränssnittet och verifiera att det fungerar.
I den vänstra kolumnen kan du se ett registeravsnitt. Du kan klicka på den för att se detaljerade instruktioner om hur du loggar in och skjuter bilder in i den. Låt oss gå tillbaka till vårt lokala skrivbord, som ska ha Docker installerat på det.
Vi kan använda den för att bygga en enkel hello-world container och driva den till det här registret. Skapa en ny mapp i ditt lokala system:
$ cd ~$ mkdir sample_container
Inuti skapar vi en fil med namnet Dockerfil och lägg till följande innehåll i den:
FRÅN ubuntu: senaste## Dina anpassade kommandon här
Du kan behålla din Dockerfile med bara första raden. Det blir en vanlig ubuntu-behållare. Nu bygger du den med en meningsfull tagg (vi kommer att använda taggen mitt projekt vilket är samma som vårt GitLab-projektnamn, detta är viktigt). I samma katalogkörning:
$ docker build -t-registret.gitlab.exempel.com /Kom ihåg att ersätta ditt GitLab-användarnamn istället för
Det skapar bara en Ubuntu-container tillsammans med att hämta bilden. Den här bilden är vad som skjuts. Om du ändrar behållaren och skapar en ny bild med den (med hjälp av docker begå kommandot det blir en ny bild). Låt oss driva vaniljubuntu-bilden till vårt register.
Först måste vi logga in med vårt Gitlab-användarnamn och lösenord:
$ docker-inloggningsregistret.gitlab.exempel.comKör sedan:
$ docker build -t-registret.gitlab.exempel.com / root / mitt-projekt .$ docker push-registret.gitlab.exempel.com / root / mitt-projekt
Om du är osäker på vad din behållares tagg ska vara, besök ditt projekts registersida och det kommer att finnas tydliga instruktioner för det. Om docker-push-kommandot har fungerat ordentligt kan du se att en ny docker-bild laddas upp (eller skjuts) i din GitLab-instans. Som det visades i mitt fall:
Slutsats
Versionskontroll är så mycket mer än bara källkodshantering. Det förbättras ständigt för att tillgodose ett mångsidigt utbud av krav som alla programvaruprojekt kan behöva oväntat. Containerregistret är bara toppen av isberget. Du kan ha CD / CI-rörledningar, avancerad konfigurationshantering, auktorisering via tokens och en mängd andra funktioner aktiverade i GitLab. Hoppas att du har lärt dig något nytt om denna underbara teknik i den här handledningen.
Låt oss veta om det finns något som du vill att vi ska täcka!