若要轉載本文,請務必聲明出處: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
