0Pricing
Docker & DevOps Fundamentals · Lezione

Creazione di immagini Docker con Jenkins

Configuri i job Jenkins per creare e inviare automaticamente immagini Docker a un registry quando cambia il codice.

Creazione di immagini Docker con Jenkins è una lezione Docker & DevOps Fundamentals gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Docker & DevOps Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.

Automatizzare le build Docker

Creare manualmente le immagini Docker può essere lento, incoerente e soggetto a errori. Questo vale soprattutto in un ambiente di team o quando le modifiche al codice sono frequenti.

L'automazione è fondamentale per una distribuzione software affidabile ed efficiente. In questa lezione impareremo a integrare Jenkins con Docker per automatizzare la creazione e il push delle immagini.

Creazione di immagini Docker con Jenkins — illustrazione 1

Prerequisiti per Jenkins e Docker

Per creare immagini Docker, Jenkins deve interagire con un demone Docker. Ciò significa che il client Docker deve essere installato sulla macchina o sull'agent in cui verrà eseguito il job Jenkins.

Inoltre, saranno necessari:

  • Un server Jenkins in esecuzione (dalla lezione 1)
  • Accesso a un registry Docker (ad esempio, Docker Hub)
  • Un'applicazione di esempio e il relativo Dockerfile

Installazione di Docker sull'host Jenkins

Per consentire a Jenkins di eseguire comandi Docker, assicurarsi che Docker sia installato e configurato sul server o sull'agent Jenkins. Spesso l'utente Jenkins deve disporre delle autorizzazioni necessarie per interagire con il daemon Docker.

Ecco come configurarlo in un sistema Linux:

sudo apt-get update
sudo apt-get install -y docker.io
sudo usermod -aG docker jenkins
sudo systemctl restart docker
sudo systemctl restart jenkins

Protezione delle credenziali del registry

Per eseguire il push delle immagini in un Docker registry, Jenkins ha bisogno di credenziali. È fondamentale archiviarle in modo sicuro, senza inserirle direttamente nel Jenkinsfile o nella configurazione del job.

La funzionalità integrata Credentials di Jenkins è perfetta a questo scopo:

  • Accedere a Manage Jenkins > Manage Credentials.
  • Aggiungere una nuova credenziale Username with password per il Docker registry.
  • Assegnarle un ID descrittivo, ad esempio dockerhub-credentials, da utilizzare in seguito.

Applicazione Flask di esempio

Utilizziamo una semplicissima applicazione Python Flask. La inseriremo in un file denominato app.py. L'applicazione mostrerà un messaggio di base «Hello».

Ci servirà anche un file requirements.txt per specificare le dipendenze Python.

# 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.2

Creazione del Dockerfile

Successivamente, definiremo la nostra immagine Docker utilizzando un Dockerfile. Questo file indicherà a Docker come creare l'immagine dell'applicazione.

Inserire questo Dockerfile nella stessa directory di app.py e 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"]

Job Jenkins: fase di build

Ora configuriamo un job Jenkins Freestyle. Nella sezione Build Steps, aggiungere un passaggio Execute shell. Questo comando creerà l'immagine Docker.

Ricordarsi di sostituire yourusername con il proprio nome utente Docker Hub o con il percorso del registry.

# In Jenkins 'Execute shell' build step:
docker build -t yourusername/coddykit-app:latest .

Job Jenkins: fase di login e push

Dopo aver creato l'immagine, dobbiamo eseguirne il push nel nostro Docker registry. In genere è necessario effettuare il login. Utilizzeremo le credenziali salvate in precedenza.

Aggiungere un altro passaggio Execute shell. Se configurato correttamente, Jenkins inietterà le credenziali come variabili d'ambiente, ad esempio DOCKER_USER e DOCKER_PASS.

# In Jenkins 'Execute shell' build step:
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
docker push yourusername/coddykit-app:latest

Automazione dei trigger di build

Il valore di CI/CD deriva dall'automazione. Jenkins può attivare automaticamente questi job di build e push in risposta a diversi eventi:

  • SCM Polling: Jenkins controlla periodicamente il repository Git per verificare la presenza di nuovi commit.
  • Webhooks: Il provider Git, ad esempio GitHub, GitLab o Bitbucket, invia una notifica a Jenkins ogni volta che viene eseguito il push del codice.
  • Upstream Projects: Il job viene attivato al completamento con esito positivo di un altro job Jenkins.

Test del job Jenkins

Dopo aver configurato i passaggi di build e i trigger, salvare il job Jenkins. È possibile attivare manualmente una build per eseguire un test. Controllare l'output della console per verificare che la creazione e il push dell'immagine Docker siano riusciti.

Un'esecuzione completata con successo significa che la pipeline CI può ora creare e archiviare automaticamente nuove immagini Docker ogni volta che il codice cambia.

Verifica rapida

È stato configurato un job Jenkins per creare ed eseguire il push di un'immagine Docker. Il repository Git contiene nuove modifiche al codice.

Riepilogo: build e push

Ottimo lavoro! In questa lezione ha imparato a:

  • Preparare l'ambiente Jenkins per interagire con Docker.
  • Gestire in modo sicuro le credenziali del Docker registry in Jenkins.
  • Configurare un job Jenkins per creare un'immagine Docker utilizzando un Dockerfile.
  • Eseguire il push della nuova immagine in un Docker registry.
  • Comprendere diversi modi per attivare build automatiche.

L'automazione di questi passaggi è una parte fondamentale della Continuous Integration e costituisce la base per la Continuous Delivery.

Domande Frequenti

La lezione «Creazione di immagini Docker con Jenkins» è gratuita?

Sì — il testo completo di «Creazione di immagini Docker con Jenkins» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Docker & DevOps Fundamentals, passa a CoddyKit PRO. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.

Cosa imparerò in «Creazione di immagini Docker con Jenkins»?

Configuri i job Jenkins per creare e inviare automaticamente immagini Docker a un registry quando cambia il codice. Eserciti Docker & DevOps Fundamentals con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Docker & DevOps Fundamentals?

Non è richiesta alcuna esperienza precedente. Docker & DevOps Fundamentals su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Creazione di immagini Docker con Jenkins»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Docker & DevOps Fundamentals?

Sì. Ogni lezione Docker & DevOps Fundamentals include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Introduzione a Jenkins
  2. Creazione di immagini Docker con Jenkins
  3. Distribuzione automatizzata con Jenkins
  4. Pipeline Jenkins come codice con Jenkinsfile
← Torna a Docker & DevOps Fundamentals