解決Jenkins集成docker插件問(wèn)題的一些方法
背景
測(cè)試環(huán)境使用Jenkins集成docker插件實(shí)現(xiàn)測(cè)試環(huán)境一鍵部署服務(wù),首先jenkins已安裝docker build and publish插件,但是運(yùn)營(yíng)job出現(xiàn)了一系列的問(wèn)題!
問(wèn)題一
docker執(zhí)行報(bào)錯(cuò),Build step 'Docker Build and Publish' marked build as failure,導(dǎo)致這句的問(wèn)題有很多,更詳細(xì)的錯(cuò)誤信息:jenkins容器不支持docker操作?
分析問(wèn)題: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ì),沒(méi)有解決!
錯(cuò)誤二
提示bin目錄下無(wú)可執(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ī)沒(méi)有共享,在宿主機(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 沒(méi)有認(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命令了,也就不需要通過(guò)shh插件,從容器跳出到宿主機(jī)執(zhí)行build&push操作命令了,需要執(zhí)行啟動(dòng)容器的腳本即可!
docker容器化,在宿主機(jī)與容器映射的任何東西都是同一個(gè),也就是不管修改了宿主機(jī)掛載容器的文件還是容器中修改了掛載的宿主機(jī)文件都會(huì)同時(shí)被修改。
到此這篇關(guān)于解決Jenkins集成docker插件問(wèn)題的一些方法的文章就介紹到這了,更多相關(guān)Jenkins集成docker插件內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信