docker-compose安裝JenKins


一、Jenkins

Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重復的工作,旨在提供一個開放易用的軟件平台,使軟件的持續集成變成可能。

JenKins官網

二、安裝JenKins的前提條件

硬件 最低要求 推薦
內存 256M 1GB或更高
硬盤 1GB(作為一個Docker容器運行jenkins的話推薦10GB) 50GB或更高

三、部署規划

服務器IP 192.168.113.48
端口 8928
安裝目錄 /home/work/docker-jenkins
數據卷映射目錄 /home/work/docker-jenkins/data

四、安裝JenKins

  • 在安裝目錄下創建docker-jenkins目錄,創建成功后進入該目錄

    mkdir docker-jenkins
    cd docker-jenkins
    
  • 新建並按照規划編輯docker-compose.yml文件,編輯完后保存退出

    vim docker-compose.yml
    
    version: '3'
    services:
      jenkins:
        image: 'jenkins/jenkins:lts'
        container_name: jenkins
        restart: always
        environment:
          - TZ=Asia/Shanghai
        ports:
          - '8928:8080'
          - '50000:50000'
        volumes:
          - '/etc/localtime:/etc/localtime'
          - './data:/var/jenkins_home'
          - '/var/run/docker.sock:/var/run/docker.sock'
          - '/usr/bin/docker:/usr/bin/docker'
    
  • 在安裝目錄下執行相關命令,啟動容器

    docker-compose up -d
    

    執行命令后發現服務並沒有運行,查看日志:

    [root@node03 docker-jenkins]# docker-compose ps
     Name                Command                 State      Ports
    -------------------------------------------------------------
    jenkins   /sbin/tini -- /usr/local/b ...   Restarting        
    [root@node03 docker-jenkins]# docker-compose logs -f
    Attaching to jenkins
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    jenkins    | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    

    通過日志發現,是由於權限不足導致服務沒有正常運行, 因為當映射本地數據卷時,/home/work/docker-jenkins目錄的擁有者為root用戶,而容器中jenkins user的uid為1000;執行以下命令即可。

    chown -R 1000:1000 /home/work/docker-jenkins
    

    執行命令后會發現服務已正常啟動:

    [root@node03 docker-jenkins]# chown -R 1000:1000 /home/work/docker-jenkins
    You have new mail in /var/spool/mail/root
    [root@node03 docker-jenkins]# docker-compose ps
     Name                Command               State                        Ports                      
    ---------------------------------------------------------------------------------------------------
    jenkins   /sbin/tini -- /usr/local/b ...   Up      0.0.0.0:50000->50000/tcp, 0.0.0.0:8928->8080/tcp
    

五、驗證Jenkins

  • 在瀏覽器輸入ip:端口,頁面提示解鎖Jenkins

    BAXFoj.png

    根據頁面提示信息,密碼路徑(路徑為容器中路徑)如上圖所示,在此之前已經做了數據映射,不用登錄容器,直接在宿主機查看即可:

    [root@node03 docker-jenkins]# cat /home/work/docker-jenkins/data/secrets/initialAdminPassword 
    d1d17726052b4716acd6315a276fd0fb
    

    將查出來的密碼復制到瀏覽器中即可。點擊"繼續"就會出現以下界面:

    BAj1u8.png

    根據自己所需進行選擇即可。(建議選擇“安裝推薦的插件”,若插件安裝失敗,多試幾次即可)

插件下載較慢是由於服務器在國外,所以下載緩慢,可以更換為國內插件源:
Jenkins更換國內插件鏡像源教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM