Bygg Docker-images med Jenkins
Konfigurera Jenkins-jobb så att Docker-images automatiskt byggs och skickas till ett register när koden ändras.
Bygg Docker-images med Jenkins är en gratis lektion i Grunderna i Docker och DevOps på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i Docker och DevOps, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i Docker och DevOps innehåller totalt 4 lektioner.
Automatisera Docker-byggen
Att bygga Docker-avbildningar manuellt kan vara långsamt, inkonsekvent och felbenäget. Detta gäller särskilt i en teammiljö eller när koden ändras ofta.
Automatisering är nyckeln till tillförlitlig och effektiv programvaruleverans. I den här lektionen lär vi oss att integrera Jenkins med Docker för att automatisera skapandet och pushningen av avbildningar.

Förutsättningar för Jenkins och Docker
För att Jenkins ska kunna bygga Docker-avbildningar måste det kunna kommunicera med en Docker-daemon. Det innebär att Docker-klienten måste vara installerad på den maskin eller agent där Jenkins-jobbet ska köras.
Ni behöver även:
- En körande Jenkins-server (från lektion 1)
- Åtkomst till ett Docker-register (t.ex. Docker Hub)
- En exempelapplikation och dess Dockerfile
Installera Docker på Jenkins-värden
För att Jenkins ska kunna köra Docker-kommandon måste Docker vara installerat och konfigurerat på Jenkins-servern eller -agenten. Jenkins-användaren behöver ofta behörighet att interagera med Docker-daemonen.
Så här kan Ni konfigurera det på ett 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 jenkinsSkydda autentiseringsuppgifter för registret
För att skicka avbildningar till ett Docker-register behöver Jenkins autentiseringsuppgifter. Det är viktigt att lagra dem säkert, inte direkt i Jenkinsfile eller jobbkonfigurationen.
Jenkins inbyggda funktion Credentials passar perfekt för detta:
- Gå till Manage Jenkins > Manage Credentials.
- Lägg till en ny autentiseringsuppgift av typen Username with password för Ditt Docker-register.
- Ge den ett beskrivande ID (till exempel
dockerhub-credentials) som Ni kan referera till senare.
Exempel på en Flask-applikation
Vi använder en mycket enkel Python Flask-applikation. Vi lägger den i en fil med namnet app.py. Den visar meddelandet "Hello".
Vi behöver också en fil med namnet requirements.txt för att ange våra Python-beroenden.
# 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.2Skapa Dockerfile
Nu definierar vi vår Docker-avbildning med hjälp av en Dockerfile. Den här filen instruerar Docker om hur avbildningen för vår applikation ska byggas.
Placera denna Dockerfile i samma katalog som app.py och 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-jobb: byggsteg
Nu konfigurerar vi ett Jenkins Freestyle-jobb. I avsnittet Build Steps lägger Ni till steget Execute shell. Det här kommandot bygger Er Docker-avbildning.
Kom ihåg att ersätta yourusername med Ditt Docker Hub-användarnamn eller sökvägen till registret.
# In Jenkins 'Execute shell' build step:
docker build -t yourusername/coddykit-app:latest .Jenkins-jobb: logga in och skicka
Efter att avbildningen har byggts måste vi skicka den till vårt Docker-register. Det kräver vanligtvis att vi loggar in. Vi använder autentiseringsuppgifterna som lagrades tidigare.
Lägg till ytterligare ett steg av typen Execute shell. Jenkins injicerar autentiseringsuppgifterna som miljövariabler (till exempel DOCKER_USER och DOCKER_PASS) om de har konfigurerats korrekt.
# In Jenkins 'Execute shell' build step:
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
docker push yourusername/coddykit-app:latestAutomatisera byggutlösare
CI/CD:s styrka kommer från automatisering. Jenkins kan automatiskt utlösa dessa bygg- och skickningsjobb baserat på olika händelser:
- SCM Polling: Jenkins kontrollerar regelbundet Git-förvaret efter nya commits.
- Webhooks: Er Git-leverantör (GitHub, GitLab eller Bitbucket) skickar en avisering till Jenkins varje gång kod skickas.
- Uppströmsprojekt: Utlöses när ett annat Jenkins-jobb har slutförts utan fel.
Testa Jenkins-jobbet
När Ni har konfigurerat byggstegen och utlösarna sparar Ni Jenkins-jobbet. Ni kan utlösa en build manuellt för att testa det. Kontrollera konsolutdata efter lyckad byggning och skickning av Docker-avbildningen.
En lyckad körning innebär att Er CI-pipeline nu automatiskt kan skapa och lagra nya Docker-avbildningar varje gång koden ändras!
Snabbkontroll
Ni har konfigurerat ett Jenkins-jobb som bygger och skickar en Docker-avbildning. Git-förvaret innehåller nya kodändringar.
Sammanfattning: bygg och skicka
Bra jobbat! I den här lektionen har Ni lärt Er att:
- Förbereda Jenkins-miljön för interaktion med Docker.
- Hantera autentiseringsuppgifter för Docker-register på ett säkert sätt i Jenkins.
- Konfigurera ett Jenkins-jobb som bygger en Docker-avbildning med hjälp av en Dockerfile.
- Skicka den nybyggda avbildningen till ett Docker-register.
- Förstå olika sätt att utlösa automatiserade byggen.
Att automatisera dessa steg är en central del av Continuous Integration och lägger grunden för Continuous Delivery!
Lär dig Grunderna i Docker och DevOps med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Bygg Docker-images med Jenkins” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Docker och DevOps, inklusive ”Bygg Docker-images med Jenkins”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i Docker och DevOps innehåller totalt 4 lektioner.
Vad lär jag mig i ”Bygg Docker-images med Jenkins”?
Konfigurera Jenkins-jobb så att Docker-images automatiskt byggs och skickas till ett register när koden ändras. Ni övar på Grunderna i Docker och DevOps med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Grunderna i Docker och DevOps?
Du behöver inga förkunskaper. Utbildningen i Grunderna i Docker och DevOps på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Bygg Docker-images med Jenkins”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Grunderna i Docker och DevOps-lektionen?
Ja. Varje Grunderna i Docker och DevOps-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Introduktion till Jenkins
- Bygg Docker-images med Jenkins
- Automatiserad driftsättning med Jenkins
- Jenkins Pipeline as Code med Jenkinsfile