Bygning af Docker-images med Jenkins
Konfigurér Jenkins-jobs til automatisk at bygge og pushe Docker-images til et registry, når koden ændres.
Bygning af Docker-images med Jenkins er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Automatisering af Docker-builds
Manuel opbygning af Docker-images kan være langsom, inkonsekvent og fejlbehæftet. Det gælder især i et teammiljø eller ved hyppige kodeændringer.
Automatisering er afgørende for pålidelig og effektiv softwarelevering. I denne lektion lærer vi, hvordan du integrerer Jenkins med Docker for at automatisere oprettelse og push af images.

Forudsætninger for Jenkins og Docker
For at Jenkins kan bygge Docker-images, skal den kunne kommunikere med en Docker-daemon. Det betyder, at Docker-klienten skal være installeret på den maskine eller agent, hvor dit Jenkins-job skal køre.
Du skal også bruge:
- En kørende Jenkins-server (fra lektion 1)
- Adgang til et Docker-register (f.eks. Docker Hub)
- En eksempelapplikation og dens Dockerfile
Installation af Docker på Jenkins-værten
Hvis Jenkins skal kunne udføre Docker-kommandoer, skal du sikre dig, at Docker er installeret og konfigureret på Jenkins-serveren eller -agenten. Jenkins-brugeren skal ofte have tilladelse til at kommunikere med Docker-dæmonen.
Sådan kan du konfigurere det på et Linux-system:
sudo apt-get update
sudo apt-get install -y docker.io
sudo usermod -aG docker jenkins
sudo systemctl restart docker
sudo systemctl restart jenkinsSikring af registerlegitimationsoplysninger
Hvis Jenkins skal kunne pushe afbildninger til et Docker-register, skal Jenkins bruge legitimationsoplysninger. Det er vigtigt at gemme dem sikkert og ikke direkte i din Jenkinsfile eller jobkonfiguration.
Jenkins' indbyggede funktion Legitimationsoplysninger er velegnet til dette:
- Gå til Administrer Jenkins > Administrer legitimationsoplysninger.
- Tilføj en ny legitimationsoplysning af typen Brugernavn med adgangskode til dit Docker-register.
- Giv den et beskrivende id (f.eks.
dockerhub-credentials), så du kan henvise til den senere.
Eksempel på en Flask-applikation
Lad os bruge en meget enkel Python Flask-applikation. Vi placerer den i en fil med navnet app.py. Den viser en grundlæggende meddelelse med teksten 'Hello'.
Vi skal også bruge en requirements.txt-fil til at angive vores Python-afhængigheder.
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from CoddyKit!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
# requirements.txt
Flask==2.0.2Oprettelse af Dockerfile
Dernæst definerer vi vores Docker-afbildning ved hjælp af en Dockerfile. Denne fil instruerer Docker i, hvordan vores applikationsafbildning skal bygges.
Placér denne Dockerfile i samme mappe som din app.py og requirements.txt.
# Dockerfile
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]Jenkins-job: Byggetrin
Lad os nu konfigurere et Jenkins Freestyle-job. Tilføj et trin af typen Udfør shell i sektionen Byggetrin. Denne kommando bygger din Docker-afbildning.
Husk at erstatte yourusername med dit Docker Hub-brugernavn eller din registersti.
# In Jenkins 'Execute shell' build step:
docker build -t yourusername/coddykit-app:latest .Jenkins-job: Log ind- og push-trin
Efter at have bygget afbildningen skal vi pushe den til vores Docker-register. Det kræver typisk, at du logger ind. Vi bruger de legitimationsoplysninger, der blev gemt tidligere.
Tilføj endnu et trin af typen Udfør shell. Jenkins indsætter legitimationsoplysningerne som miljøvariabler (f.eks. DOCKER_USER og DOCKER_PASS), hvis det er konfigureret korrekt.
# In Jenkins 'Execute shell' build step:
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
docker push yourusername/coddykit-app:latestAutomatisering af byggetriggere
Styrken ved CI/CD kommer fra automatisering. Jenkins kan automatisk udløse disse bygge- og push-job baseret på forskellige hændelser:
- SCM-afstemning: Jenkins kontrollerer med jævne mellemrum dit Git-lager for nye commits.
- Webhooks: Din Git-udbyder (GitHub, GitLab eller Bitbucket) sender en meddelelse til Jenkins, hver gang der pushes kode.
- Overordnede projekter: Udløses, når et andet Jenkins-job er gennemført uden fejl.
Test af Jenkins-jobbet
Når du har konfigureret byggetrin og triggere, skal du gemme dit Jenkins-job. Du kan udløse en bygning manuelt for at teste det. Hold øje med konsoloutputtet for at se, om Docker-afbildningen bliver bygget og pushet uden fejl.
En vellykket kørsel betyder, at din CI-pipeline nu automatisk kan oprette og gemme nye Docker-afbildninger, hver gang din kode ændres!
Hurtigt tjek
Du har konfigureret et Jenkins-job til at bygge og pushe en Docker-afbildning. Dit Git-lager har nye kodeændringer.
Opsummering: Byg og push
Godt gået! I denne lektion lærte du, hvordan du:
- forbereder dit Jenkins-miljø til interaktion med Docker
- administrerer legitimationsoplysninger til Docker-registre sikkert i Jenkins
- konfigurerer et Jenkins-job til at bygge en Docker-afbildning ved hjælp af en Dockerfile
- pusher den nybyggede afbildning til et Docker-register
- forstår forskellige måder at udløse automatiserede bygninger på
Automatisering af disse trin er en central del af Continuous Integration og danner grundlaget for Continuous Delivery!
Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 142
- Lektioner
- 568
Ofte stillede spørgsmål
Er lektionen “Bygning af Docker-images med Jenkins” gratis?
Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Bygning af Docker-images med Jenkins”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Bygning af Docker-images med Jenkins”?
Konfigurér Jenkins-jobs til automatisk at bygge og pushe Docker-images til et registry, når koden ændres. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?
Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Bygning af Docker-images med Jenkins”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?
Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Introduktion til Jenkins
- Bygning af Docker-images med Jenkins
- Automatiseret deployment med Jenkins
- Jenkins Pipeline as Code med Jenkinsfile