解決Jenkins集成docker插件問題的一些方法
背景
測試環(huán)境使用Jenkins集成docker插件實現(xiàn)測試環(huán)境一鍵部署服務,首先jenkins已安裝docker build and publish插件,但是運營job出現(xiàn)了一系列的問題!
問題一
docker執(zhí)行報錯,Build step 'Docker Build and Publish' marked build as failure,導致這句的問題有很多,更詳細的錯誤信息:jenkins容器不支持docker操作?
分析問題:jenkins是使用docker部署的,那么在jenkins容器中并不會有docker相關的操作命令,所以執(zhí)行失?。?/p>
解決方案:需要將宿主機的docker環(huán)境映射到jenkins容器中,才能使用docker命令行
docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v /var/jenkins_home:/var/jenkins_home -u 0 -d jenkins/jenkins:lts
再次執(zhí)行,結果還是不對,沒有解決!
錯誤二
提示bin目錄下無可執(zhí)行命令?
分析:我們知道安裝的任何一個環(huán)境,如果想在linux環(huán)境執(zhí)行它的命令行,都需要加入環(huán)境變量:/usr/bin
解決:繼續(xù)映射宿主機docker可執(zhí)行命令
docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v /var/jenkins_home:/var/jenkins_home -u 0 -d jenkins/jenkins:lts
tips:which命令,有點類似whereis 查找命令或者文件:前者查看系統(tǒng)環(huán)境變量中的命令(返回第一個結果),后者程序名相關路徑(返回所有匹配的結果)
錯誤三
找不到相關依賴:error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or/libltdl.so.7
分析:jenkins容器內(nèi)部,因為容器與宿主機沒有共享,在宿主機可以找到該庫:cd usr/lib64/
解決:在宿主機找到libltdl.so.7 依賴庫,掛載容器即可
docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -v /var/jenkins_home:/var/jenkins_home -v /var/data/shell:/var/data/shell -u 0 -d jenkins/jenkins:lts
錯誤四
no basic auth credentials 沒有認證
分析原因:這個插件是在jenkins容器內(nèi)部使用docker命令,build鏡像不會報錯,是在容器內(nèi),當需要push到鏡像倉庫時,需要auth
解決辦法:直接的辦法在jenkins的job中加入一行認證,docker login --username=xxxx --password=xxxx nexus.xxxx.com
tips:執(zhí)行完命令,會在當前目錄生成一個.credentials里面記錄了登錄nexus鏡像倉庫的帳號密碼信息
總結
至此,前面的步驟已經(jīng)完成了jenkins容器內(nèi)部可以使用docker命令了,也就不需要通過shh插件,從容器跳出到宿主機執(zhí)行build&push操作命令了,需要執(zhí)行啟動容器的腳本即可!
docker容器化,在宿主機與容器映射的任何東西都是同一個,也就是不管修改了宿主機掛載容器的文件還是容器中修改了掛載的宿主機文件都會同時被修改。
到此這篇關于解決Jenkins集成docker插件問題的一些方法的文章就介紹到這了,更多相關Jenkins集成docker插件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker consul的容器服務更新與發(fā)現(xiàn)的問題小結
這篇文章主要介紹了Docker consul的容器服務更新與發(fā)現(xiàn),講解了服務注冊與發(fā)現(xiàn)的基本概念講解,本文給大家介紹的非常詳細,需要的朋友可以參考下2021-08-08Docker部署Django+Mysql+Redis+Gunicorn+Nginx的實現(xiàn)
這篇文章主要介紹了Docker 部署 Django+Mysql+Redis+Gunicorn+Nginx,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11Docker如何根據(jù)名稱查詢?nèi)萜鱅D鏡像ID并停止刪除
這篇文章主要介紹了Docker如何根據(jù)名稱查詢?nèi)萜鱅D鏡像ID并停止刪除問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11詳解SpringBoot項目docker環(huán)境運行時無限重啟問題
這篇文章主要介紹了詳解SpringBoot項目docker環(huán)境運行時無限重啟問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11