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