Jenkins服務使用 宿主機的docker、docker-compose (Jenkins 執行sudo命令時出現“sudo: no tty present and no askpass program specified”,以及 docker-compose command not found解決辦法)


若要轉載本文,請務必聲明出處:https://www.cnblogs.com/zhongyuanzhao000/p/11681474.html

原因:

本人最近正在嘗試CI/CD,所以就使用了 Jenkins這款強大的CI/CD工具。
由於直接在linux系統安裝的Jenkins服務,且在pipeline中需要使用到 docker命令 和 docker-compose 命令,所以我考慮 在Jenkins中直接使用 宿主機中的 docker 和 docker-compose 命令

解決步驟:

一、修改配置,使得在Jenkins中通過 sudo 就可以獲得root權限
(問題:Jenkins 執行sudo命令時出現“sudo: no tty present and no askpass program specified”)
       在linux系統中執行命令:vi /etc/sudoers  來修改/etc/sudoers 文件,修改內容如下:
            首先,將   Defaults    requiretty  這一行用#注釋掉;
            然后,在文件末尾加上一行:jenkins ALL=(ALL) NOPASSWD: ALL
            接着,通過 wq! 來強制保存並退出;
            最后,需要重啟Jenkins,執行命令:/etc/init.d/jenkins restart

二、配置docker命令:
       1、在linux系統執行命令: which docker  
             得到輸出:/usr/bin/docker  ,先記錄下來。
       2、在Jenkins中,進入  系統管理==>全局工具設置,下拉至 Docker==>新增Docker,填寫如下:

 

       3、然后在使用docker命令時,前面一定要加上 sudo,即 sudo docker xxx

 三、配置docker-compose命令:
(問題:Jenkins中報錯: docker-compose command not found)
        1、首先檢查確認docker-compose的安裝目錄沒有問題,
              >>可以先在 linux系統執行命令:which docker-compose 
              獲得docker-compose程序的位置為:/usr/local/bin/docker-compose
              >>然后,在Jenkins中查詢 /usr/local/bin/ 目錄確認含有docker-compose程序即可

        2、由於報錯docker-compose命令找不到,也就是Jenkins無法確認docker-compose命令的位置,
              那么可以直接使用上一步找到的程序的絕對路徑來執行該命令,同時必須加上sudo,如下:
              sudo /usr/local/bin/docker-compose  xxx


免責聲明!

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



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