Automatiserad driftsättning med Jenkins
Skapa en CI/CD-pipeline i Jenkins för att distribuera Docker-containrar till en målmiljö.
Automatiserad driftsättning med Jenkins är en gratis lektion i Grunderna i Docker och DevOps på CoddyKit. Detta är lektion 3 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.
Introduktion till automatiserad driftsättning
Välkommen till den sista lektionen om CI/CD med Jenkins och Docker! I dag fokuserar vi på att automatisera driftsättningen av Era Docker-containrar.
Automatiserad driftsättning innebär att programvara släpps till produktions- eller stagingmiljöer utan manuella ingrepp. Det är en viktig del av Continuous Delivery och Deployment och säkerställer snabbhet, konsekvens och tillförlitlighet.

Varför automatisera driftsättning?
Manuell driftsättning av applikationer kan vara långsam, felbenägen och inkonsekvent. Automatisering hanterar dessa utmaningar:
- Snabbhet: Driftsätt nya funktioner eller korrigeringar snabbt.
- Tillförlitlighet: Minska risken för mänskliga fel med standardiserade processer.
- Konsekvens: Säkerställ att varje driftsättning följer samma steg.
- Effektivitet: Frigör utvecklare så att de kan fokusera på kodning i stället för driftsättningsuppgifter.
Driftsättnings-pipelinens steg
En typisk Jenkins-pipeline för Docker-driftsättning består av flera viktiga steg:
- Build: Bygg Docker-avbildningen (detta behandlades i tidigare lektioner).
- Test: Kör automatiserade tester mot avbildningen.
- Push: Skicka avbildningen till ett Docker-register.
- Deploy: Hämta avbildningen från registret och kör den på en målserver.
- Verify: Bekräfta att den nya driftsättningen fungerar korrekt.
I dag fokuserar vi på stegen "Deploy" och "Verify".
Konfigurera målmiljön
Innan Jenkins kan driftsätta måste målservern vara klar. Det innebär vanligtvis följande:
- Docker installerat: Docker Engine måste vara installerat på målservern.
- SSH-åtkomst: Jenkins behöver säker Shell-åtkomst (SSH) till målservern.
- Användarbehörigheter: SSH-användaren behöver behörighet att köra Docker-kommandon.
Vi hanterar vanligtvis SSH-autentiseringsuppgifter säkert i Jenkins.
Jenkins-autentiseringsuppgifter för SSH
För att ansluta till en fjärrserver använder Jenkins SSH-autentiseringsuppgifter. Dessa består vanligtvis av par med SSH-användarnamn och privat nyckel som lagras säkert i Jenkins autentiseringsuppgiftshanterare.
När Ni definierar en pipeline kan Ni ange att Jenkins ska använda dessa autentiseringsuppgifter för specifika steg, så att Jenkins kan köra kommandon på målservern.
Exempel på ett enkelt driftsättningsskript
Här är ett enkelt shellskript som kan köras på en målserver för att uppdatera en Docker-container. Det stoppar den gamla containern, tar bort den, hämtar den nya avbildningen och startar den.
APP_NAME och IMAGE_NAME skickas som miljövariabler.
#!/bin/bash
# Stop and remove existing container
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true
# Pull the new Docker image
docker pull ${IMAGE_NAME}
# Run the new container
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
echo "Deployment of ${APP_NAME} complete!"Integrera med Jenkins-pipeline
I en Jenkinsfile kan Ni använda plugin-programmet sshPublisher eller ett enkelt sh-steg med vidarebefordran av SSH-agenten för att köra kommandon på en fjärrvärd. Så här kan ett driftsättningssteg se ut med ett grundläggande sh-steg, förutsatt att SSH är konfigurerat.
agent { label 'remote-deploy-host' } innebär att det här steget körs på målservern.
stage('Deploy to Production') {
agent { label 'remote-deploy-host' }
steps {
withEnv([
"APP_NAME=my-webapp",
"IMAGE_NAME=myregistry/my-webapp:latest"
]) {
sh '''
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true
docker pull ${IMAGE_NAME}
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
echo "Deployment successful!"
'''
}
}
}Uppnå rullande uppdateringar
För driftsättningar utan avbrott räcker det inte att bara stoppa och starta. Vanligtvis används en strategi som någon av följande:
- Rullande uppdatering: Ersätt gradvis gamla containrar med nya, en i taget, så att tjänsten förblir tillgänglig.
- Blue/Green-driftsättning: Driftsätt den nya versionen (Green) parallellt med den gamla (Blue) och växla sedan trafiken.
Jenkins kan orkestrera dessa strategier, men verktyg som Docker Swarm eller Kubernetes har inbyggt stöd för mer avancerade strategier.
Verifiera driftsättningen
Efter driftsättningen är det viktigt att verifiera att applikationen körs korrekt. Det kan innebära följande:
- Hälsokontroller: Enkla HTTP GET-begäranden till applikationens health-endpoint.
- Loggövervakning: Kontrollera containerloggarna efter fel.
- Integrationstester: Kör en snabb uppsättning tester mot den nyligen driftsatta versionen.
Er Jenkins-pipeline kan innehålla ett steg kallat "Verify" för att automatisera dessa kontroller.
Kontrollera Era kunskaper
Betrakta följande Jenkinsfile-utdrag för ett driftsättningssteg. Vad är det huvudsakliga syftet med docker stop ${APP_NAME} || true?
Sammanfattning: automatiserad driftsättning
Bra jobbat! Ni har lärt Er hur man arbetar med automatiserad driftsättning med Jenkins och Docker.
- Automatiserad driftsättning säkerställer snabba, tillförlitliga och konsekventa releaser.
- Målmiljöer behöver Docker och SSH-åtkomst.
- Jenkins använder säkra autentiseringsuppgifter för att ansluta till fjärrservrar.
- Driftsättningsskript stoppar vanligtvis gamla containrar, hämtar nya avbildningar och startar nya containrar.
- Verifieringssteg är avgörande för att bekräfta att driftsättningen lyckades.
Detta avslutar vår kurs om CI/CD med Jenkins och Docker. Fortsätt öva för att bli skicklig på dessa kraftfulla verktyg!
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 ”Automatiserad driftsättning med Jenkins” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Docker och DevOps, inklusive ”Automatiserad driftsättning 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 ”Automatiserad driftsättning med Jenkins”?
Skapa en CI/CD-pipeline i Jenkins för att distribuera Docker-containrar till en målmiljö. 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 3 av 4.
Hur lång tid tar lektionen ”Automatiserad driftsättning 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