解決Jenkins集成docker插件問題的一些方法
背景
測試環(huán)境使用Jenkins集成docker插件實(shí)現(xiàn)測試環(huán)境一鍵部署服務(wù),首先jenkins已安裝docker build and publish插件,但是運(yùn)營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ī)可以找到該庫:cd usr/lib64/
解決:在宿主機(jī)找到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
錯(cuò)誤四
no basic auth credentials 沒有認(rèn)證
分析原因:這個(gè)插件是在jenkins容器內(nèi)部使用docker命令,build鏡像不會(huì)報(bào)錯(cuò),是在容器內(nèi),當(dāng)需要push到鏡像倉庫時(shí),需要auth
解決辦法:直接的辦法在jenkins的job中加入一行認(rèn)證,docker login --username=xxxx --password=xxxx nexus.xxxx.com
tips:執(zhí)行完命令,會(huì)在當(dāng)前目錄生成一個(gè).credentials里面記錄了登錄nexus鏡像倉庫的帳號(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 環(huán)境中部署和運(yùn)行 Nginx 的方法
在當(dāng)今的技術(shù)領(lǐng)域,Docker 就像一位神奇的魔法師,能夠讓我們輕松地管理和部署各種應(yīng)用程序,這篇文章主要介紹了在 Docker 環(huán)境中部署和運(yùn)行 Nginx 的方法,需要的朋友可以參考下2024-12-12
如何將本地構(gòu)建好的docker鏡像發(fā)布到dockerhub
這篇文章主要介紹了如何將本地構(gòu)建好的docker鏡像發(fā)布到dockerhub,文中通過圖文教程介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Docker安裝部署Mysql8的過程(以作數(shù)據(jù)持久化)
這篇文章主要介紹了Docker安裝部署Mysql8(以作數(shù)據(jù)持久化),首先創(chuàng)建容器并進(jìn)行持久化處理,接著配置遠(yuǎn)程連接并嘗試,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
docker 部署prometheus+grafana的過程詳解
這篇文章主要介紹了docker 部署prometheus+grafana的過程,本文通過示例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03
Docker部署FastDFS的實(shí)現(xiàn)方法
這篇文章主要介紹了Docker部署FastDFS的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
skywalking容器化部署docker鏡像構(gòu)建k8s從測試到可用
這篇文章主要為大家介紹了skywalking容器化部署docker鏡像構(gòu)建k8s從測試到可用的構(gòu)建部署過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03

