GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak spustit Jenkins v Dockeru pomocí Docker Compose with Volumes

Chcete spustit Jenkins v Dockeru, ale nejste si jisti, zda použít svazky nebo ponechat data v kontejnerech? Pokud je Jenkins kontejnerizován, jak zálohujete data? Potřebujete zálohovat celý kontejner? Mohou informace přetrvávat mimo kontejner a jak? Použití Docker Compose se svazky vám může pomoci zajistit, že vaše data Jenkins budou v bezpečí, i když se kontejner Docker rozbije.

Kromě zálohování dat vám používání svazků Docker umožňuje také sdílet data Jenkins mezi více kontejnery.

Pokračujte ve čtení, protože v tomto článku se dozvíte, jak spustit Jenkins pomocí Docker a Docker Compose. Dozvíte se, jak najít a případně zálohovat data Jenkins uvnitř i vně kontejneru Docker.

Požadavky

V tomto článku bude spousta příkladů učení. Pokud chcete pokračovat, budete potřebovat:

  • Počítač s Docker a Docker Compose nainstalováno. Ukázky v tomto článku jsou vytvořeny na Ubuntu Server 20.04 . Pokud chcete, můžete Docker použít v systému Windows nebo macOS.

Tento článek se nezabývá tím, jak nainstalovat a nastavit Docker a Docker Compose. Můžete nahlédnout do oficiální dokumentace Docker. Blog ATA také obsahuje mnoho článků souvisejících s Dockerem které si možná budete chtít také přečíst.

Spuštění Jenkinse v Dockeru

Chcete-li spustit instanci Jenkins v Dockeru, musíte nejprve stáhnout obrázek z úložiště. V tomto příkladu je Jenkinsův obrázek stažen z Docker Hub . Před vytvořením kontejneru máte možnost nejprve stáhnout obrázek. Nebo můžete také spustit kontejner a nechat Docker stáhnout obrázek za běhu.

Níže uvedený příkaz spustí kontejner Jenkins pomocí docker run příkaz. --name [NAME] možnost je místo, kde přiřadíte název kontejneru Docker. Pokud není zadán název kontejneru, Docker přiřadí kontejneru náhodný název.

-p [host-port:container-port] možnost znamená vystavit port nebo porty uvnitř kontejneru vašemu hostitelskému počítači. V níže uvedeném kódu jsou porty 8080 a 50000 vystaveny hostiteli Docker pomocí stejných čísel portů.

Nakonec jenkins/jenkins:lts znamená, že kontejner ke spuštění bude používat jenkins:lts Obrázek dockeru z Jenkinsova úložiště . Hodnoty name můžete změnit a hostitelský port čísla v případě potřeby, ale neupravujte kontejner čísla portů.

Zkopírujte prosím níže uvedený kód a spusťte jej ve svém terminálu.

docker run --name my-jenkins-1 -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

Po spuštění výše uvedeného příkazu začne Docker vytvářet nový kontejner. Jakmile je kontejner Jenkins spuštěn, poznamenejte si počáteční heslo správce zobrazené na terminálu. Heslo správce je vyžadováno během počátečního nastavení Jenkins.

Dokončení počátečního nastavení Jenkins

Poté, co kontejner Jenkins vstoupil do spuštěného stavu, můžete nyní přistupovat na stránku správce Jenkins. Pokud si pamatujete z příkazu, který jste použili k vytvoření kontejneru, číslo portu je 8080. Chcete-li získat přístup k instanci Jenkins, přejděte na HTTP://localhost:8080 .

Jak můžete vidět níže, Odemknout Jenkinse stránka vyžaduje zadání počátečního hesla správce. Předtím byste si měli zkopírovat počáteční heslo správce. Do pole Heslo správce zadejte heslo a klikněte na Pokračovat .

Na stránce Přizpůsobit Jenkins na stránce, budete mít možnost Instalovat navrhované pluginy . Tyto navrhované pluginy jsou pluginy, které komunita Jenkins obvykle instaluje. Pokud máte předem vybranou sadu pluginů k instalaci, zvolte Vybrat pluginy k instalaci možnost.

Pro jednoduchost Instalace navrhovaných pluginů je vybraná možnost pro tento příklad.

Pluginy se nainstalují a vy můžete jen počkat, až bude instalace dokončena. Jak můžete vidět níže, instaluje se čtrnáct (14) navrhovaných pluginů. Počet doporučených pluginů se může časem zvyšovat nebo snižovat. V době, kdy jste nainstalovali svou instanci Jenkins, mohou být navrhované pluginy již jiné.

Ihned po dokončení instalace pluginů uvidíte Vytvořit prvního administrátora strana. Na této stránce vytvoříte první účet správce Jenkins. Vyplňte všechna pole podle potřeby a klikněte na Uložit a pokračovat. Nezapomeňte si zapamatovat pověření správce, které jste právě vytvořili.

Na stránce Konfigurace instance stránka je místo, kde můžete změnit adresu URL stránky správce Jenkins. Hodnota URL by obvykle byla skutečná adresa URL, ke které budou uživatelé Jenkins přistupovat. V tomto příkladu ponechte výchozí hodnotu http://localhost:8080 a klikněte na Uložit a dokončit .

Na poslední stránce nastavení uvidíte potvrzení, že je nastavení Jenkins dokončeno. Klikněte na Začít používat Jenkins .

Když uvidíte Vítejte u Jenkinse stránku, jak je znázorněno níže, pak jste dokončili instalaci Jenkins. V tomto okamžiku můžete začít konfigurovat Jenkinse a vytvářet nové položky nebo projekty.

Vyhledání Jenkinsových dat v kontejneru

V předchozí části jste vytvořili kontejner Docker pro spuštění instance Jenkins. Docker kontejnery, stejně jako všechno ostatní na počítači, se mohou rozbít. Pokud se kontejner z nějakého důvodu stane nedostupným, data Jenkinse jsou také pryč.

Abychom lépe porozuměli umístění dat Jenkins, níže uvedený kód používá docker exec příkaz k vypsání obsahu /var/jenkins_home . Název kontejneru Docker v tomto příkladu je my-jenkins-1.

docker exec my-jenkins-1 ls -l /var/jenkins_home

Níže můžete vidět výsledek spuštění příkazu výše. Obsah /var/jenkins_home adresář jsou uvedeny. /var/jenkins_home adresář obsahuje nastavení, uživatele, pluginy a další důležité položky.

Zálohování Jenkinsových dat z kontejneru do hostitele

V tomto okamžiku jste potvrdili, že data Jenkins se nacházejí uvnitř kontejneru. Měli byste zkopírovat data Jenkins z kontejneru do hostitele. A jakmile budou Jenkins data z kontejneru, můžete si je zálohovat.

Je dobré, že Docker má vestavěnou podporu pro kopírování souborů mezi kontejnerem Docker a hostitelem Dockeru. Pomocí příkazu docker cp <container id>:/path/in/container /path/in/host

Níže uvedený příklad používá docker cp příkaz ke zkopírování dat kontejneru my-jenkins-1 do umístění hostitele Docker. Všimněte si, že k úspěšnému provedení tohoto příkazu nemusí být kontejner ani spuštěn.

docker cp my-jenkins-1:/var/jenkins_home ~/jenkins_backup

Níže uvedená ukázka ukazuje výše uvedený příkaz v akci. Jak vidíte, cílový adresář je automaticky vytvořen příkazem.

Nyní, když jste extrahovali data Jenkins z kontejneru, můžete možná komprimovat a archivovat celou složku. Možná budete muset udělat stejný úkol pokaždé, když provedete změny v Jenkinsovi.

Spuštění Jenkinse v Dockeru pomocí Volume Mount

Aby byla vaše data Jenkins trvalá a konzistentní mimo kontejner Docker, měli byste použít svazek Docker .

Jak bylo vysvětleno v předchozí části, konfigurační soubory Jenkins jsou umístěny uvnitř kontejneru Docker na adrese /var/jenkins_home . Chcete-li zajistit, že soubory Jenkins budou uloženy mimo kontejner, můžete použít -v pomocí docker run příkaz.

Níže uvedený kód vytvoří nový kontejner Docker s názvem my-jenkins-2 . Porty 8080 a 50000 budou vystaveny hostiteli. Navíc /var/jenkins_home adresář uvnitř kontejneru Docker bude připojen jako svazek k hostiteli jako jenkins_home.

docker run --name my-jenkins-2 -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

Po spuštění příkazu výše by se měl vytvořit nový kontejner Docker a vstoupit do spuštěného stavu. Spuštění kontejneru můžete ověřit pomocí příkazu docker ps.

Výpis všech běžících kontejnerů

Vyhledání Jenkinsových dat na hostiteli Docker

Kde je tedy datová složka Jenkins nyní? Na základě příkazu, který jste použili k vytvoření kontejneru my-jenkins-2, je připojený svazek jenkins_home . Chcete-li vědět, kde v souborovém systému je jenkins_home umístění lze nalézt, použijte docker volume příkaz.

Níže uvedený příkaz zobrazí podrobnosti o jenkins_home svazku na hostiteli Docker.

docker volume inspect jenkins_home

Níže uvedený snímek obrazovky ukazuje informace o jenkins_home hlasitost jako výsledek spuštění příkazu výše.

Nyní, když víte, kde najdete data Jenkins, můžete to potvrdit prozkoumáním umístění přípojného bodu. V tomto příkladu jenkins_home bod připojení svazku je v /var/lib/docker/volumes/jenkins_home/_data .

Nyní, když data Jenkins přetrvávají mimo kontejner, můžete zálohovat adresář pro úschovu. Také, i když je kontejner Jenkins odstraněn, data zůstanou na hostiteli Docker.

Spuštění Jenkins pomocí Docker Compose with Volumes

Dalším způsobem, jak spustit Jenkins, je použití docker-compose příkaz. Pomocí Docker Compose , můžete v případě potřeby nasadit jednu nebo více instancí Jenkins. Než to však uděláte, musíte vytvořit soubor Docker Compose pro každý případ.

Vytvoření souborů Docker Compose

Ve výchozím nastavení docker-compose příkaz načte soubor s názvem docker-compose.yml nebo docker-compose.yaml ve stejném pracovním adresáři, kde zadáváte příkaz.

Pomocí vašeho výběru dostupného textového editoru otevřete nový prázdný soubor. Poté zkopírujte níže uvedený kód YAML, vložte jej do editoru a poté uložte soubor docker-compose.yml soubor.

# docker-compose.yml
version: '3.7'
services:
  jenkins:
    image: jenkins/jenkins:lts
    privileged: true
    user: root
    ports:
      - 8083:8080
      - 50003:50000
    container_name: my-jenkins-3
    volumes:
      - ~/jenkins_data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock

Tento článek nepokrývá anatomii souboru Docker Compose. Můžete si prohlédnout oficiální referenční dokumentaci k vytvoření souboru abyste lépe pochopili, co každé nastavení v souboru pro vytváření zpráv znamená.

V tomto příkladu však můžete rozdělit nejdůležitější nastavení v obou souborech Docker Compose, jak je uvedeno níže.

  • obrázek :Toto je základní obrázek pro vytvoření instance kontejneru Docker.
  • porty :Zde se definuje mapování portu mezi hostitelem Docker a kontejnerem.
  • objemy :Toto jsou svazky mapované mezi hostitelem Docker a kontejnerem.
  • název_kontejneru :Toto je název, který chcete přiřadit kontejneru, který vytváříte. V tomto příkladu je název kontejneru my-jenkins-3 .

Spuštění kontejneru Jenkins pomocí Docker Compose

Nyní, když jste uložili dva soubory Docker Compose, můžete je nyní použít ke spuštění dvou instancí kontejneru Jenkins Docker.

Chcete-li spustit my-jenkins-3 kontejner, použijte příkaz níže. Všimněte si, že příkaz níže předpokládá, že docker-compose.yml soubor je ve stejném adresáři, kde spouštíte příkaz.

# Start the my-jenkins-3 container
docker-compose up -d

# Get the initial admin password
docker exec my-jenkins-3 cat /var/jenkins_home/secrets/initialAdminPassword

# Confirm the my-jenkins-3 container is running
docker ps

my-jenkins-3 kontejner se poté spustí a přejde do provozního stavu, jak můžete vidět níže.

Přejděte pomocí prohlížeče na adresu URL http://localhost:8083, abyste získali přístup k Jenkins a dokončete počáteční nastavení.

Po dokončení počátečního nastavení Jenkins pro my-jenkins-3 kontejneru, můžete potvrdit, že složka ~/jenkins_data je naplněna datovými soubory Jenkins.

Protože datové soubory Jenkins přetrvávají na hostiteli Docker, i když my-jenkins-3 Docker kontejner bude odstraněn, konfigurace přežije. Chcete-li dále otestovat stálost konfigurace Jenkins, zastavte my-jenkins-3 kontejner pomocí příkazu níže.

docker-compose down

Všimněte si, že pomocí downer-compose down příkaz automaticky odstraní samotný kontejner.

Nyní spusťte my-jenkins-3 pomocí níže uvedeného příkazu znovu nahoru.

docker-compose up -d

A když vstoupíte do webového rozhraní Jenkins, první stránka, kterou uvidíte, je přihlašovací stránka namísto stránky počátečního nastavení. Zjistíte, že je zachována stejná konfigurace Jenkins, včetně vašich přihlašovacích údajů.

Shrnutí

V tomto článku jste se naučili, jak spustit Jenkins pomocí Dockeru různými způsoby. Naučili jste se, jak spustit Jenkins v Dockeru s připojeným svazkem a bez něj. A naučili jste se, jak zálohovat data Jenkins z kontejneru na hostitele.

Také jste se naučili, jak spustit instanci Jenkins pomocí Docker Compose se svazky namapovanými na hostitele Docker. Datové soubory Jenkins jsou poté uloženy v hostiteli Docker, díky čemuž jsou nastavení Jenkins trvalá a konzistentní, i když je kontejner Docker odstraněn.

Používání Docker a Docker Compose se svazky vám dává flexibilitu pro zálohování a nakonec opětovné použití Jenkinsových dat. Kterou metodu spuštění Jenkinse v Dockeru byste podle vás použili více?

Další čtení

  • Nasazení prvního kontejneru pomocí Dockeru pro Windows
  • Jak vytvářet (a spravovat) svazky Dockeru v systému Windows
  • Jak nainstalovat Ubuntu 20.04 [krok za krokem]

Docker
  1. Jak nainstalovat Jenkins pomocí Docker

  2. Jak zabezpečit citlivá data pomocí tajemství Docker Compose

  3. Jak nainstalovat Docker na CentOS

  1. Jak používat Docker Compose

  2. Jak spustit MySQL v kontejneru Docker

  3. Rychlý průvodce používáním Docker Compose

  1. Jak přepsat vstupní bod pomocí Docker Run

  2. Jak používat příkaz Docker Run s příklady

  3. Jak spustit Jenkins Container jako službu Systemd pomocí Dockeru