利用Docker打造容器化構建環(huán)境
大小:0.6 MB 人氣: 2017-10-11 需要積分:1
本文中,我假定讀者已經(jīng)熟悉Jenkins和Docker,我將把焦點放在特定的配置上而不是把筆墨花費在許多博文已經(jīng)介紹過的入門概念上。
設定目標
我所要達成的目標其實非常簡單:在一個容器中搭建Jenkins主節(jié)點,并且在多個主機上搭建多個JNLP代理容器。這些代理節(jié)點可以運行在不同的AWS VPC或者ECS上。

我的目標是得到一個能在任何主機上部署的通用配置,而每個項目分別定義各自的構建環(huán)境。這樣各個開發(fā)團隊就可以掌控這份配置,而不用經(jīng)由Jenkins的構建團隊。我會盡量避免構建一個特定工具集的代理節(jié)點。容器技術能實現(xiàn)這樣的構建環(huán)境,但是要真正把每個細節(jié)都做好絕對是一個挑戰(zhàn)。
為了實現(xiàn)這個目標,我還使用了Jenkins Pipeline / Workflow插件。這個插件讓你能非常優(yōu)雅地使用DSL語言描述構建過程,例如這樣簡單地定義:
node(‘test-agent’) { stage “Container Prep”// do the thing in the containerdocker.image(‘maven:3.3.3-jdk-8’).inside { // get the codezstage ‘Checkout’git url: ‘https://github.com/damnhandy/Handy-URI-Templates.git’stage ‘Build’// Do the buildsh “。/mvnw clean install”} }
這個pipeline會在一個名為”test-agent”的Jenkins代理上執(zhí)行,它會基于“maven”3.3.3-jdk-8”鏡像構建一個容器。這個pipeline在物理節(jié)點上能正常運行,但是在容器中運行則會報錯。
運行在Docker中的Docker
在容器中運行Jenkins的主或從節(jié)點,可能有人會以為我需要特權模式來使用”Docker in Docker”,但是我并沒有,Jér?me Petazzoni發(fā)表了一篇文章《用Docker-in-Docker來構建持續(xù)集成環(huán)境?請三思》,你應該參考一下這篇文章。
如果你還在使用wrapdocker的腳本,你應該問問自己為什么,因為這樣用起來更簡單:
docker run -v${JENKINS_HOME}:/var/jenkins_home \-v/var/run/docker.sock:/var/run/docker.sock \-p8080:8080-p50000:50000\index.csphere.cn/microimages/jenkins
這個命令會啟動Jenkins并且可以擁有所有的容器操作功能,所以并不需要特權模式來啟動容器,也不需要”Docker-in-Docker”模式。
有個地方需要注意:在這里你不能用官方的Jenkins鏡像,因為jenkins用戶需要屬于docker用戶組,這樣才能使用socket,從而能在容器中的Jenkins調用docker,最終實現(xiàn)通過Jenkins構建和運行其他容器。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
利用Docker打造容器化構建環(huán)境下載
相關電子資料下載
- 如何在Windows系統(tǒng)上設置Docker鏡像源 55
- 機器學習需要掌握的九種工具盤點 16
- Docker鏡像國內(nèi)加速的幾種方法 55
- VectorCAST|Docker場景下的代碼白盒測試實施 402
- 如何用Springboot整合Redis 118
- 如何在macOS系統(tǒng)中用Docker運行macOS鏡像呢? 364
- 什么是Docker容器?為什么需要Docker容器? 71
- 為什么需要Docker容器?Docker容器和VM有什么區(qū)別? 323
- 如何使用 Docker容器化技術 1188
- Dockerfile定義Docker鏡像的構建過程 1088