GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come eseguire il contenitore Jenkins come servizio Systemd con Docker

Le attività ripetitive sono generalmente noiose e finiscono per richiedere molto tempo ed energia. Nel tempo, sono stati sviluppati più strumenti di automazione per alleviare il fastidio di eseguire lavori ripetitivi. Uno di questi strumenti di automazione è Jenkins. Jenkins è un server di automazione opensource progettato per aiutare gli sviluppatori di software a creare, testare e distribuire applicazioni e quindi a semplificare il processo di integrazione e distribuzione continua.

In precedenza abbiamo scritto un articolo su come installare Jenkins su CentOS 8/RHEL 8. In questo articolo, faremo le cose in modo leggermente diverso ed eseguiremo il contenitore Jenkins come servizio systemd con docker.

Prerequisiti

Sono necessarie alcune cose prima di continuare.

  • Docker installato sul tuo sistema Linux.
  • Un utente normale con privilegi sudo.

Passaggio 1) Installa Docker Engine

Per iniziare, devi avere il motore Docker installato sul tuo sistema. Abbiamo un articolo dettagliato su come installare Docker su CentOS 8 / RHEL 8. Esegui sotto il comando Docker per visualizzare la versione Docker

$ sudo docker version

Dallo snippet sopra, abbiamo confermato che la finestra mobile è installata e che stiamo eseguendo la versione della finestra mobile 19.03.13.

Fase 2) Crea un utente Jenkins

Successivamente, creeremo un utente di sistema "Jenkins" che gestirà il servizio Jenkins. Ma prima, crea un gruppo di sistema per Jenkins:

$ sudo groupadd --system jenkins

Quindi crea l'utente di sistema Jenkins

$ sudo useradd -s /sbin/nologin --system -g jenkins jenkins

E infine aggiungi l'utente Jenkins al gruppo Docker come mostrato:

$ sudo usermod -aG docker jenkins

Per confermare che l'utente Jenkins è stato aggiunto al gruppo Docker, esegui il comando id come mostrato

$ id jenkins

L'output sarà,

[[email protected] ~]$ id jenkins
uid=991(jenkins) gid=986(jenkins) groups=986(jenkins),989(docker)
[[email protected] ~]$

Fantastico! Procediamo ed estraiamo un'immagine di Jenkins.

Passaggio 3) Estrarre l'immagine Jenkins dall'hub Docker

Richiamare il comando seguente per estrarre l'ultima immagine Jenkins dall'hub Docker.

$ sudo docker pull jenkins/jenkins:lts

Questo di solito richiede alcuni secondi su una connessione Internet abbastanza stabile. Una volta scaricato, verifica che l'immagine Jenkins sia presente invocando il seguente comando:

$ sudo docker images | grep jenkins

L'output del comando precedente sarebbe:

[[email protected] ~]$ sudo docker images | grep jenkins
jenkins/jenkins     lts                 f669140ba6ec        6 days ago          711MB
[[email protected] ~]$

Jenkins richiede uno storage persistente per archiviare i dati e riutilizzarli anche in caso di arresto anomalo del container. Pertanto, creeremo una directory di archiviazione come mostrato.

$ sudo mkdir /var/jenkins
$ sudo chown -R 1000:1000 /var/jenkins

Passaggio 4) Crea un servizio systemd per Jenkins

Utilizzando il tuo editor di testo preferito, crea un file systemd Jenkins come mostrato:

$ sudo vi /etc/systemd/system/jenkins-docker.service

Incolla i seguenti contenuti e salva il file.

[Unit]
Description=Jenkins Server
Documentation=https://jenkins.io/doc/
After=docker.service
Requires=docker.service

[Service]
Type=simple
User=jenkins
Group=jenkins
TimeoutStartSec=0
Restart=on-failure
RestartSec=30s
ExecStartPre=-/usr/bin/docker kill jenkins-server
ExecStartPre=-/usr/bin/docker rm jenkins-server
ExecStartPre=/usr/bin/docker pull jenkins/jenkins:lts
ExecStart=/usr/bin/docker run  --name jenkins-server  --publish 8080:8080 --publish 50000:50000  --volume /var/jenkins:/var/jenkins_home  jenkins/jenkins:lts
SyslogIdentifier=jenkins
ExecStop=/usr/bin/docker stop jenkins-server

[Install]
WantedBy=multi-user.target

Per avviare il servizio Jenkins, ricarica prima systemd e successivamente avvia Jenkins.

$ sudo systemctl daemon-reload
$ sudo systemctl start jenkins-docker

Ora controlliamo se Jenkins è in esecuzione. Per fare ciò, eseguiremo:

$ sudo systemctl status jenkins-docker

Grande ! Jenkins è attivo e funzionante come servizio systemd. Poiché Jenkins sarà in esecuzione sulla porta 8080, apri la porta sul firewall come mostrato:

$ sudo firewall-cmd --permanent --add-port=8080/tcp
$ sudo firewall-cmd --reload

Per configurare Jenkins, sfoglia semplicemente l'URL del server come mostrato

http://ip-server:8080

Otterrai la pagina "Sblocca Jenkins" come mostrato. Per procedere è necessario fornire la password che si trova nel file mostrato

[[email protected] ~]$ cat /var/jenkins/secrets/initialAdminPassword
9c61bd823a404056bf0a408f4622aafc
[[email protected] ~]$

Al termine, fai clic su "Continua"

Quindi, seleziona l'opzione "Installa plug-in suggeriti" come mostrato.

Successivamente, crea un utente amministrativo per l'account Jenkins e fai clic su "Salva e continua"

Il programma di installazione ti guiderà attraverso i passaggi rimanenti fino alla fine. Dopo una corretta installazione, otterremo la seguente dashboard Jenkins

Ed è un involucro. In questa guida hai imparato come eseguire Jenkins all'interno di un contenitore mobile come servizio systemd.

Leggi ancheCome installare e configurare Jenkins su Ubuntu 20.04


Docker
  1. Come installare WordPress con Docker su Ubuntu

  2. Come installare Jenkins con Docker

  3. Come eseguire un programma all'interno di un contenitore Docker?

  4. Come eseguire MySQL in un contenitore Docker

  5. Come eseguire uno script con systemd subito prima dell'arresto?

Esegui il contenitore Docker Almalinux o Rocky Linux 8 con Systemd (systemctl)

Come eseguire PHPMyAdmin in un contenitore Docker

Come eseguire Grafana in un contenitore Docker

Come copiare file con Docker cp nel tuo Docker Container

Come eseguire Jenkins in Docker usando Docker Compose con volumi

Come eseguire i contenitori Docker